编写此 lambda 表达式的更好方法

本文关键字:更好 方法 表达式 lambda | 更新日期: 2023-09-27 18:37:17

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

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

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

编写此 lambda 表达式的更好方法

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

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

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

试试这个:

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