1

FDerive からすべてのデータを取得しようとしていますが、where 句でフィルターを設定しようとしています。残念ながら、spd の行が null のときに spd に触れると、nullreferenceexpection が発生します。

var Result = from fpd in FDerive
                             join spd in SDerive
                             on new { fpd.PId, fpd.SId }
                             equals new { spd.PId, spd.SId } into allRows
                             from spd in allRows.DefaultIfEmpty()
                             where spd.SId == ""
                             || spd.PId == ""
                             select new { fpd, spd };

null エラーを回避するにはどうすればよいですか?

4

2 に答える 2

0

次の質問のコードの下部に答えが見つかりました

LINQ ダブル左結合

var results =
        from person in students
        join entry in subquery on person.FullName equals entry.AuthorFullName into personEntries
        from personEntry in personEntries.DefaultIfEmpty()
        orderby person.FullName
        select new
        {
            PersonName = person.FullName,
            BlogTitle = personEntry == null ? "" : personEntry.Title
        };
于 2013-03-31T22:32:50.000 に答える
0

DefaultIfEmpty<T>は、ソース コレクションが空の場合、デフォルト値 (Tこの場合) を持つ 1 つの要素のみを含むセットを返します。結合でアイテムが返されない場合も同様nullですspdnull

nullwhere句でチェックしてみてください

var Result = 
    ...
    where spd == null || spd.SId == "" || spd.PId == ""
    select new { fpd, spd };
于 2013-03-31T17:01:02.510 に答える