我有一个对象数组,我想在这个数组中找到某个特定对象的索引:
int ix = Array.IndexOf(products, products.Where(item => item != null && item.Id == "xxx").FirstOrDefault());
Id="xxx"的项目不存在,但 ix 结果为 1。
所以,我猜 int 的默认值是 1。我怎么知道 1 是属于第一项还是默认值?如果我可以将默认值设置为 -1 就好了。
最后我用 findIndex 方法完成了,但想知道如何用 indexOf 方法完成。
所以你有一个问题的两个部分。首先,您要查找产品:
var product = products.FirstOrDefault(item => item != null && item.Id == "xxx");
找到该产品后,您希望在 products
集合中找到它的索引:
int index = Array.IndexOf(products, product);
使用 FirstOrDefault()
您已经完成了一半。如果 ID 为“xxx”的产品不存在,product
将为 null
。所以你可以检查它并跳过 IndexOf()
for null
:
if (product == null)
{
return -1;
}
else
{
return Array.IndexOf(products, product);
}
您当前的代码返回 1,这意味着 products[1]
为 null
。