なぜ私はboolにnull値を代入させたのですか?これを解決する最良の方法は何ですか?

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型のメンバに割り当てることはできません。これはnullable型ではありません。

この理由は、 IsOnlineListingbool ですが、データベースのフィールドがnullであるためです。だから、私は事実上、値の型にnull値を割り当てることを試みている(これは不可能である)。

私は、これを解決するには、 IsOnlineListing をヌル可能な型にすることを考えていますが、最初は何故このようにしたのか少し混乱しています。つまり、データベースフィールドは [bit] NULL フィールドとして定義されています。私はコンパイラが、null値ではない型に null の値を代入させるよりも賢明だと思っていました。

だから私が疑問に思っているのは、これが正しい解決策であるかどうかです。これを行う別の方法がありますか?コンパイラがこれが問題であるか、問題であると私に言うことができなかったのはなぜですか?

0
列はNULL可能か、後で変更されましたか?
追加された 著者 V4Vendetta,

2 答え

you need に change your declaration of IsOnlineListing

から

bool IsOnlineListing;

bool? IsOnlineListing;

または、このようなことをする

var result = (から shareclass in database.ShareClassInfo

    where shareclass.Id == ID
    select new ShareClass
               {
                   IsOnlineListing = shareclass.IsOnlineListing.HasValue ?
                       shareclass.IsOnlineListing.Value : false;
               }
   );

var list = result.にList();
3
追加された
または IsOnlineListing = shareclass.IsOnlineListing.Value
追加された 著者 Cipi,
おしゃべり
追加された 著者 Waqas Raja,

ヌル可能型を使用できます。

0
追加された