1
我有一個非常簡單的數據庫。它是各種配置項目的名稱/值存儲,我試圖簡單地將它們全部列入項目列表。LINQ查詢中的字符串比較會導致可空的booelan?
我的LINQ查詢看起來是這樣的:
configurationList = (from c in database.Configurations select new ViewConfigurationSettingModel(c.name, c.value){ IsChanged = (c.name == id) }).ToArray();
類ViewConfigurationSettingModel看起來是這樣的:
public class ViewConfigurationSettingModel
{
public ViewConfigurationSettingModel(string name, string value)
{
this.Name = name;
this.Value = value;
this.IsChanged = false;
}
public string Name { get; private set; }
public string Value { get; private set; }
public bool IsChanged { get; set; }
}
當我執行的LINQ查詢,我得到一個例外,因爲「IsChanged」不是一個可空類型並且不能包含null。我很難過,如何(c.name == id)
可能導致null。這兩個值都是字符串,但即使與null進行比較也應該導致false爲true。
LINQ會發生什麼,突然之間會導致null?
這有點兒是有道理的。你的第二個建議不起作用。編譯器不接受它。錯誤指出你不能使用'??'與布爾類型。所以看起來,在運行表達式時,編譯器和運行時發生了什麼之間有很大的區別。 –
@ Jeroen-bartEngelen:是的,我應該想到這一點。將編輯刪除該建議。有趣... –