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/

10-11 11:02