-1

我正在尝试编写一个 lambda 表达式,该表达式查看一个对象数组(“字段”),其中可能有也可能没有特定项目。如果存在值,我想检索它们;如果数组中没有字段的代码为“SomeCode”,则没有要检索的值。我很好奇是否有一种更简洁的方法来编写下面的内容,因为我需要为很多字段执行此操作,并且想要运行两次“FirstOrDefault”调用。

if (fields.FirstOrDefault(x => x.Code == "SomeCode") != null) 
{
    obj.CodeValue = fields.FirstOrDefault(x => x.Code == "SomeCode").Value;
}

编辑:感谢您以“仅限 Lambda”的方式执行此操作;我想提高我在这方面的技能,并认为会有比调用它两次或简单地将其分配给临时对象更干净的东西。

4

2 回答 2

5

只需缓存返回值FirstOrDefault,然后进行比较。

var item = fields.FirstOrDefault(x => x.Code == "SomeCode");
if (item != null) 
{
    obj.CodeValue = item.Value;
}

在您当前的代码中,您要查询两次,一次用于检查null,一次用于访问值。

于 2013-10-29T18:16:42.317 回答
2

尝试这个:

var field = fields.FirstOrDefault(x => x.Code == "SomeCode");

if (field != null) 
    obj.CodeValue = field.Value;
于 2013-10-29T18:16:49.730 回答