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);
如果没有找到匹配项,
Data1
将为null
。 (这就是OrDefault
部分添加的内容)如果您想将其他值替换为null,则可以这样做,例如Data1 = GetAllData2.FirstOrDefault(x => x.Name == strName) ?? new dsData1();
关于c# - 对于可观察的集合列表,检查LINQ返回是否为null,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19544813/