我有一个非常简单的数据库。它是各种配置项的名称/值存储,我试图简单地将它们全部输出到项目列表中。
我的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?
答案 0 :(得分:2)
与null进行比较会在C#中产生简单的true / false,但在SQL中则不会。我怀疑这是问题所在。假设id
非空,您可以尝试类似:
IsChanged = c.name != null && (c.name == id)
如果你可以在数据库中使name
列不可为空,那也可能有帮助......