0
List<tblX> messages = (from x in db.tblX where x.msg_id == id_id 
                           || x.name == firstName  select x).ToList();

エラーが発生します:

「tblX」のプロパティ「x」を「null」値に設定できませんでした。このプロパティは、'Int16' 型の null 以外の値に設定する必要があります。

db にプロパティ msg_blocked があります。これは null 可能で整数です。変換を行う必要があることはわかっていますが、それを使用していないか、linq のどこにも必要ありません。

4

2 に答える 2

3

tblX のクラス定義がデータベース表現と一致しないようです。そのため、null 許容値を受け入れるようにクラスを変更するか、必要なフィールドを投影するだけです。

List<tblX> messages = (from x in db.tblX 
                   where (x.msg_id == id_id || x.name == firstName)
                   select new tblX
                   {
                    //required fields
                    msg_id = x.msg_id,
                    name = x.name,
                    ...
                   }).ToList();

補遺: この問題に遭遇する理由は、これが使用可能なすべてのフィールドにプロジェクトされる にselect x 変換される ときの舞台裏に あります。select new tblX提供されるコードはより明示的で、クエリを実行して投影するフィールドを指定します。

于 2012-11-02T08:15:21.437 に答える
1
List<tblX> messages = (from x in db.tblX 
                       where (x.msg_id == id_id || x.name == firstName) && 
                              x.msg_blocked != null
                       select x).ToList();
于 2012-11-02T07:57:10.320 に答える