我正在尝试编写一个lambda表达式来查看对象数组('fields'),这些对象可能包含也可能没有特定的项目。我想检索它们存在的值;如果数组中没有字段的代码为“SomeCode”,则没有值可以检索。我很好奇是否有更简洁的方法来编写下面的内容,因为我需要在很多字段中执行此操作并且想要完成两次“FirstOrDefault”调用。
if (fields.FirstOrDefault(x => x.Code == "SomeCode") != null)
{
obj.CodeValue = fields.FirstOrDefault(x => x.Code == "SomeCode").Value;
}
编辑:感谢您以“仅限Lambda”的方式做到这一点的任何见解;我想提高我在这方面的技能,并认为有一些比调用它更简洁或只是将它分配给临时对象更清洁。
答案 0 :(得分:5)
只需缓存FirstOrDefault
的返回值,然后进行比较。
var item = fields.FirstOrDefault(x => x.Code == "SomeCode");
if (item != null)
{
obj.CodeValue = item.Value;
}
在您当前的代码中,您要查询两次,一次检查null
,稍后查询值。
答案 1 :(得分:2)
试试这个:
var field = fields.FirstOrDefault(x => x.Code == "SomeCode");
if (field != null)
obj.CodeValue = field.Value;