重构 LINQ 查询以适应空值/缺失属性

Refactoring LINQ query to accommodate null values / missing properties

我有一个字符串数组,其中包含我需要解析的可变数量的属性。我正在使用 LINQ 来解析这些数据,但不禁想到有更多 efficient/elegant 的方法来实现这一点,而不是像我所做的那样复制 LINQ。 是否有一种固有的方法来解释 NULL 值(因为 属性 可能存在也可能不存在于数组中)而不是我在这里做的:

MyCollection.StringArray
    .Where(e => e.name == "aproperty") != null 
      ? MyCollection.StringArray.Where(e => e.name == "aproperty") FirstOrDefault().value 
      : string.Empty;

最终,我想要做的就是从 属性 中提取值(如果它存在于集合中),否则我需要一个空字符串(或 null)。但是,我不想抛出任何异常。

如果您想防止在尝试访问空序列时出现异常,您可以使用 DefaultIfEmpty:

string value = MyCollection.StringArray
    .Where(e => e.name == "aproperty")
    .Select(e => e.value)
    .DefaultIfEmpty(string.Empty)
    .First();

首先 select value 属性 很重要,即使它不存在也是安全的。使用 DefaultIfEmpty,您可以使用 First 而不是 FirstOrDefault