6

DefaultIfEmpty()LINQ 外部結合で使用されたときに拡張メソッドが null 値を取得しないという問題の解決策を探しています。

次のようにコードします。

            var SummaryLossesWithNets = (from g in SummaryLosses
                                     join n in nets
                                     on g.Year equals n.Year into grouping
                                     from x in grouping.DefaultIfEmpty()
                                     select new
                                         {
                                             Year = g.Year,
                                             OEPGR = g.OccuranceLoss,
                                             AEPGR = g.AggregateLoss,
                                             OEPNET = ((x.OEPRecovery == null) ? 0 : x.OEPRecovery),
                                             AEPNET = ((x.AEPRecovery == null) ? 0 : x.AEPRecovery),
                                         });

リスト SummaryLosses には、年のサブ部分を含むテーブル 'nets' に結合したい何年にもわたるデータがあります。x が null 値である場合に例外がスローされます。これは、SummaryLosses の年数が nets の年数と一致しないと、グループ化リストに null 値が作成されるためだと思います。

ここでヌル値を確認するにはどうすればよいですか? ご覧のとおり、x のプロパティで null をチェックしようとしましたが、x が null であるため、これは機能しません。

敬具 リチャード

4

2 に答える 2

8

x代わりに nullかどうかを確認するだけです。

OEPNET = x == null ? 0 : x.OEPRecovery,
AEPNET = x == null ? 0 : x.AEPRecovery

または、x.OEPRecoveryx.AEPRecoveryも null 許容プロパティの場合は、次を使用します。

OEPNET = x == null ? 0 : (x.OEPRecovery ?? 0),
AEPNET = x == null ? 0 : (x.AEPRecovery ?? 0)
于 2012-10-24T15:13:43.723 に答える