3

nullではないプロパティがあります (PK です)。しかし、そのテーブルで LEFT JOIN を使用するクエリがあり、null 値が発生する可能性があります

リンク

(from a in dbContext.TableA
join b in dbContext.TableB on a.IdB equals b.IdB into bLeft
from bTbl in bLeft.DefaultIfEmpty()
select new
{
    IdBTemp = bTbl.IdB, // This value may be null
    IdATemp = a.IdA
}.AsEnumerable().Select(row => new DynamicClassModel()
{
    // Stuff here (convertion to string, concatanations and other stuff)
});

*クラス モデル *

[Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
[Column("IdB")]
public long IdB { get; set; }

これはほんの小さなクエリの例です。私のクエリはそれよりも大きく、左結合が多く、null としてマップされていないフィールドも多くありますが、このクエリでは null である可能性があります。


私はLETについて読んでいましたが、null値を何らかの値(0など)で埋めようとしました。

null 値を null ではないプロパティに渡すにはどうすればよいですか?

4

2 に答える 2

3

デフォルト値の 0 を入力してみてください。

(from a in dbContext.TableA
join b in dbContext.TableB on a.IdB equals b.IdB into bLeft
from bTbl in bLeft.DefaultIfEmpty()
select new
{
    IdBTemp = bTbl == null ? 0 : bTbl.IdB,
    IdATemp = a.IdA
}.AsEnumerable().Select(row => new DynamicClassModel()
{
    // Stuff here (convertion to string, concatanations and other stuff)
});

int?しかし、代わりにa を使いたいと思うかもしれません。その場合、これを使用します。

(from a in dbContext.TableA
join b in dbContext.TableB on a.IdB equals b.IdB into bLeft
from bTbl in bLeft.DefaultIfEmpty()
select new
{
    IdBTemp = bTbl == null ? (int?)null : bTbl.IdB,
    IdATemp = a.IdA
}.AsEnumerable().Select(row => new DynamicClassModel()
{
    // Stuff here (convertion to string, concatanations and other stuff)
});
于 2013-08-01T12:50:10.123 に答える
2

必要に応じてデフォルト値を指定してみてください:bLeft.DefaultIfEmpty(0)またはbLeft.DefaultIfEmpty(-1)

于 2013-08-01T12:52:17.147 に答える