作爲LINQ查詢的一部分,我有一系列列,其中只有一列將包含值,如何將該單值賦給變量而無需必須做類似如何從LINQ中的列列表中選擇非空
myVal = column1.hasValue ? column1.value : column2.hasValue ? column2.value : column3.hasValue ? column3.value : etc
與this question類似,但與LINQ而不是SQL。
不幸的是,用SQL處理任何數據庫端不是一種選擇。
作爲LINQ查詢的一部分,我有一系列列,其中只有一列將包含值,如何將該單值賦給變量而無需必須做類似如何從LINQ中的列列表中選擇非空
myVal = column1.hasValue ? column1.value : column2.hasValue ? column2.value : column3.hasValue ? column3.value : etc
與this question類似,但與LINQ而不是SQL。
不幸的是,用SQL處理任何數據庫端不是一種選擇。
var values = new[]{ column1, column2, column3 };
var value = values.First(nullable => nullable.HasValue).Value;
甚至更簡潔:
var value = (column1 ?? column2 ?? column3).Value;
對於所有值均爲空值的情況,values(where nullable => nullable.HashValue).FirstOrDefault()。GetValueOrDefault()' – Fabio
@Fabio:因爲它似乎是一個規則,必須是非空的,我覺得選擇一個任意值是危險的。我更喜歡這種情況下的例外情況,即有一個錯誤:) –
正確,一個必須是非空的,並且存在邏輯(希望)能夠正確執行 –
我們可以看到,查詢? – Fildor
是否有可能沒有列包含值? (==所有都爲空?) – Fildor