我有一个Linq to SQL查询非常类似于以下内容:
var result = (from shareclass in database.ShareClassInfo
where shareclass.Id == ID
select new ShareClass
{
IsOnlineListing = shareclass.IsOnlineListing
}
);
var list = result.ToList();
当我尝试从结果中创建列表时,我收到以下错误:
无法将null值赋给System.Boolean类型的成员,该类型是非可空值类型。
原因是IsOnlineListing
是bool
,但数据库中的字段为空。所以我有效地尝试分配一个带有空值的值类型(这是不可能的)。
我认为解决这个问题的方法是让IsOnlineListing
成为一个可以为空的类型,但我有点困惑,为什么我一开始就这么做。我的意思是,数据库字段被定义为[bit] NULL
字段。我认为编译器比让我将null
值分配给非可空类型更聪明,或者至少它会警告我。
所以我想知道的是,这是否是正确的解决方案?还有另一种方法吗?为什么编译器不能告诉我这是或可能是一个问题?
答案 0 :(得分:3)
您需要更改IsOnlineListing
这
bool IsOnlineListing;
要
bool? IsOnlineListing;
或者做这样的事情
var result = (from shareclass in database.ShareClassInfo
where shareclass.Id == ID
select new ShareClass
{
IsOnlineListing = shareclass.IsOnlineListing.HasValue ?
shareclass.IsOnlineListing.Value : false;
}
);
var list = result.ToList();
答案 1 :(得分:0)
您可以使用nullable type。