检查 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);
但它给出了铸造错误。
您的代码可以简化为:
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。