c# - FirstOrDefault 函数默认值

标签 c#

<分区>

我有一个对象数组,我想在这个数组中找到某个特定对象的索引:

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

关于c# - FirstOrDefault 函数默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39746988/

相关文章:

c# - 下载非常大的文件 (8GB+) - 结合 WCF 和 WebClient?

c# - 在 Razor 中将 View 模型属性编码为 JavaScript

c# - LINQ 选择所有项目数组元素

c# - 使用 2 个其他数组对数组进行排序

c# - 多任务 Java 的分段排列

c# - 如何读取闭合多边形内的像素?

c# - 当我只想在某些时候使用别名时,有没有办法避免多余的 "using"指令?

c# - 具有多个可选参数的 asp.net mvc 路由不起作用

c# - Background Worker 被调用两次

c# - 确定 htmlnode 名称/类型(例如 li)