LINQ查询中的字符串比较会导致可为空的booelan?

LINQ查询中的字符串比较会导致可为空的booelan?,linq,Linq,我有一个非常简单的数据库。它是一个用于各种配置项的名称/值存储,我试图简单地将它们全部取出并放入一个项列表中 我的LINQ查询如下所示: configurationList = (from c in database.Configurations select new ViewConfigurationSettingModel(c.name, c.value){ IsChanged = (c.name == id) } ).ToArray(); public class ViewConfigu

我有一个非常简单的数据库。它是一个用于各种配置项的名称/值存储,我试图简单地将它们全部取出并放入一个项列表中

我的LINQ查询如下所示:

configurationList = (from c in database.Configurations select new ViewConfigurationSettingModel(c.name, c.value){ IsChanged = (c.name == id) } ).ToArray();
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; }
}
类ViewConfigurationSettingModel如下所示:

configurationList = (from c in database.Configurations select new ViewConfigurationSettingModel(c.name, c.value){ IsChanged = (c.name == id) } ).ToArray();
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的类型,并且不能包含null。我很困惑
(c.name==id)
如何会导致空值。这两个值都是字符串,但即使与null进行比较也会导致简单的true或false


LINQ怎么会突然出现空值?

与空值进行比较会在C#中出现简单的真/假,但在SQL中不会。我想这就是问题所在。假设
id
为非空,您可以尝试以下操作:

IsChanged = c.name != null && (c.name == id)

如果您可以使数据库中的
name
列不可为空,这也可能会有所帮助…

这有点道理。你的第二个建议行不通。编译器不接受它。该错误表示不能将“?”与布尔类型一起使用。因此,编译器所做的事情和表达式运行时发生的事情似乎有很大的区别。@Jeroen bartEngelen:是的,我应该想到这一点。将进行编辑以删除该建议。有趣的。。。