2017-08-23 58 views
1

作爲LINQ查詢的一部分,我有一系列列,其中只有一列將包含值,如何將該單值賦給變量而無需必須做類似如何從LINQ中的列列表中選擇非空

myVal = column1.hasValue ? column1.value : column2.hasValue ? column2.value : column3.hasValue ? column3.value : etc 

this question類似,但與LINQ而不是SQL。

不幸的是,用SQL處理任何數據庫端不是一種選擇。

+1

我們可以看到,查詢? – Fildor

+0

是否有可能沒有列包含值? (==所有都爲空?) – Fildor

回答

6
var values = new[]{ column1, column2, column3 }; 
var value = values.First(nullable => nullable.HasValue).Value; 

甚至更​​簡潔:

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

對於所有值均爲空值的情況,values(where nullable => nullable.HashValue).FirstOrDefault()。GetValueOrDefault()' – Fabio

+1

@Fabio:因爲它似乎是一個規則,必須是非空的,我覺得選擇一個任意值是危險的。我更喜歡這種情況下的例外情況,即有一個錯誤:) –

+0

正確,一個必須是非空的,並且存在邏輯(希望)能夠正確執行 –