重构 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
。
我有一个字符串数组,其中包含我需要解析的可变数量的属性。我正在使用 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
。