C# 如何从LINQ中的列列表中选择非null

C# 如何从LINQ中的列列表中选择非null,c#,linq,C#,Linq,作为LINQ查询的一部分,我有一系列列,其中只有一列包含一个值,如何将单个值分配给变量而不必执行类似的操作 myVal = column1.hasValue ? column1.value : column2.hasValue ? column2.value : column3.hasValue ? column3.value : etc 类似于但使用LINQ而不是SQL 不幸的是,用SQL处理任何数据库端的事情都不是一个选项 var values = new[]{ column1, colu

作为LINQ查询的一部分,我有一系列列,其中只有一列包含一个值,如何将单个值分配给变量而不必执行类似的操作

myVal = column1.hasValue ? column1.value : column2.hasValue ? column2.value : column3.hasValue ? column3.value : etc
类似于但使用LINQ而不是SQL

不幸的是,用SQL处理任何数据库端的事情都不是一个选项

var values = new[]{ column1, column2, column3 };
var value = values.First(nullable => nullable.HasValue).Value;
或者更简洁地说:

var value = (column1 ?? column2 ?? column3).Value;

我们能看到那个查询吗?有可能所有列都不包含值吗?(==所有值都为空?)对于所有值都为空的情况
value.Where(nullable=>nullable.HashValue.FirstOrDefault().GetValueOrDefault()
@Fabio:由于必须为非空似乎是一条规则,因此我发现选择任意值是危险的。我更喜欢有bug的情况下的例外:)正确,一个确实必须是非空的,并且有适当的逻辑(希望)正确地执行它