2011-10-28 40 views
0

我有一个LINQ to SQL查询非常相似于以下内容:为什么我让一个空值赋给布尔值?解决这个问题的最好方法是什么?

var result = (from shareclass in database.ShareClassInfo 

     where shareclass.Id == ID 
     select new ShareClass 
        { 
         IsOnlineListing = shareclass.IsOnlineListing 
        } 
     ); 

var list = result.ToList(); 

当我尝试从结果我碰到下面的错误列表:

The null value cannot be assigned to a member with type System.Boolean which is a non-nullable value type.

这样做的原因是IsOnlineListingbool,但数据库中的字段为空。所以我有效地试图赋值为空值(这是不可能的)。

我认为解决这个问题的方法是使IsOnlineListing为可空类型,但我有点困惑,为什么我首先要做这个。我的意思是,数据库字段被定义为[bit] NULL字段。我认为编译器会比让我将null值赋给非空类型更聪明,或者至少它会警告我。

所以我想知道的是,如果这是正确的解决方案?有没有另一种方法来做到这一点?为什么编译器不能告诉我这是或可能是一个问题?

+0

列可为空或稍后更改? – V4Vendetta

回答

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

或'IsOnlineListing = shareclass.IsOnlineListing.Value'。 – Cipi

+0

oops打字速度很快 –

相关问题