xamarin 为什么数组的IndexValue总是为-1

kuuvgm7e  于 2022-12-16  发布在  其他
关注(0)|答案(2)|浏览(116)

当我选择乘积值数组时,ProductType[]数组的indexValue总是为-1。
我的代码有什么问题吗?
任何帮助都很感激。谢谢!
视图模型:

public ProductType[] ProductTypesSel { get; set; }
private int _ProductTypeIndex = -1;

public int ProductTypeIndex
{
    get { return _ProductTypeIndex; }
    set
    {
        _ProductTypeIndex = value;

        if (value >= 0)
        {
            Item.ProductType = ProductTypesSel[value].Code;
        }
        
        OnPropertyChanged(nameof(ProductTypeDisp));
        Console.WriteLine(ProductTypeDisp);
    }
}
public string ProductTypeDisp => Config != null && ProductTypeIndex >= 0 && ProductTypeIndex < ProductTypesSel.Length ? ProductTypesSel[ProductTypeIndex].Name : null;

代码隐藏:

int indexValue = Array.IndexOf(_Model.ProductTypesSel, productValue);
_Model.ProductTypeIndex = indexValue;
8e2ybdfx

8e2ybdfx1#

因为你是按值value3搜索的,而不是按Value3。你的数组有Value3。并且数组不区分大小写。
对于不区分大小写的搜索,您可以使用以下命令

string[] arr = new string[] { "Value0", "Value1", "Value2", "Value3", "Value4", "Value5" };
int index = Array.FindIndex(arr, t => t.IndexOf("value3", StringComparison.InvariantCultureIgnoreCase) >= 0);
jutyujz0

jutyujz02#

首先,请确保ProductType中的属性Name是公共的,例如:

public class ProductType
{
  public string Name {get;set;}
}

然后可以尝试使用Array.FindIndex:

int index = Array.FindIndex(_Model.ProductTypesSel, t => t.Name ==productValue);
// or use the code below
int i=  Array.IndexOf(_Model.ProductTypesSel,  _Model.ProductTypesSel.Where(x=>x.Name==productValue).FirstOrDefault());

有关详细信息,请查看this link

相关问题