0

NULL かどうかをテストしても、dtblDetail の "Remark" 列が null の場合、常にエラーになる次の LINQ クエリがあります。

var varActiveAndUsedElementsWithDetails =
                        from e in dtblElements
                        join d in dtblDetails on e.PK equals d.FK into set
                        from d in set.DefaultIfEmpty()
                        where (e.ElementActive == true)
                        select new
                        {
                            ElementPK = e.PK,
                            Remark = d.IsRemarkNull() ? null : d.Remark
                        };

エラー メッセージは次のとおりです。「テーブル 'dtblDetails' の列 'Remark' の値は DBNull です。」d.IsRemarkNull() のテストを追加すると、null 参照例外がスローされます。

これで私を助けてもらえますか?

既に次の Web サイトを確認しましたが、DBNULL をテストする必要があること以外に役立つものは見つかりませんでした。しかし、言ったように、これは私の問題を解決しません。

4

3 に答える 3

2

問題は、「d」項目全体が空だったことです。したがって、「d.IsRemarkNull()」を呼び出すと、null 参照例外が発生しました。次のコードで問題が修正されました。

var varActiveAndUsedElementsWithDetails =
                    from e in dtblElements
                    join d in dtblDetails on e.PK equals d.FK into set
                    from d in set.DefaultIfEmpty()
                    where (e.ElementActive == true)
                    select new
                    {
                        ElementPK = e.PK,
                        Remark = d == null? null : (d.IsRemarkNull() ? null : d.Remark)
                    };
于 2009-05-25T09:14:48.743 に答える
0

エラーはどこから来ていますか?それを引き起こしているのは d.IsRemarkNull() である可能性はありますか? その方法はどのように見えますか?

多分:

DBNull.Value.Equals(d.Remark)
于 2009-05-19T06:43:06.647 に答える