检查 LINQ 返回是否为可观察集合列表的 null

本文关键字:集合 列表 null 观察 LINQ 返回 是否 检查 | 更新日期: 2023-09-27 18:36:45

Data1 = new ObservableCollection<dsData1>(from itmGetAllData2 in GetAllData2
                                          where itmGetAllData2.Name == strName
                                          select itmGetAllData2)[0]; 

如果itmGetAllData2.Name == strName之间匹配,则上面的 LINQ 工作正常,但如果没有记录匹配strName则会引发错误。

谁能建议如何处理这个问题?我试过做

.DefaultIfEmpty().Max(itmGetAllData2 => itmGetAllData2 == null ? "" : itmGetAllData2);

但它给出了铸造错误。

检查 LINQ 返回是否为可观察集合列表的 null

您的代码可以简化为:

Data1 = GetAllData2.FirstOrDefault(x => x.Name == strName);

如果未找到匹配项,则将null Data1。(这就是OrDefault部分添加的内容)如果你想用不同的值代替空,你可以这样做,例如

Data1 = GetAllData2.FirstOrDefault(x => x.Name == strName) ?? new dsData1();

收到此错误的原因是您尝试访问空查询的第一个元素。

使用FirstOrDefault

var result = GetAllData2.FirstOrDefault(ad => ad.Name = strName);
if (result != null)
{
   // Initalize your ObservableCollection here
}

当不匹配时会出现此错误,因为 [0] 正在尝试访问没有任何对象的列表中的第一个对象。请改为执行以下操作:

Data1 = GetAllData2.FirstOrDefault(d => d.Name == strName);

这将是您想要的第一个项目,如果未找到,则为 null。