通过ICollection的Lambda循环无法找到对象属性

时间:2013-11-12 03:04:52

标签: c# lambda icollection

我有一个对象列表ICollection<objectA> listA。现在我试图循环通过此listA并尝试匹配条件并将找到的结果分配给变量。我在下面尝试过:

varB.someDesc = listA.FirstOrDefault(x=>x.ID == varB.ID).someDesc

错误抱怨x.ID是对象空引用。当我提出一个断点时,我可以看到listA中有很多项,并且有一个属性ID。我可以知道出了什么问题吗?

2 个答案:

答案 0 :(得分:3)

我建议验证FirstOrDefault()的返回值,如下所示:

var item = listA.FirstOrDefault(x=>x.ID == varB.ID);
if (item != null)
    varB.someDesc = item.someDesc;

错误可能与您的想法不完全相同。

答案 1 :(得分:-2)

试试这段代码。

varB.someDesc = listA.Where(x=>x.ID == varB.ID).FirstOrDefault().someDesc

你最好在分配之前检查Object Null。