私の目標は、左の列または右の列が他の列よりも短いかどうかに関係なく、右または左に同じ行数のリストを作成することです。
次の 2 つのクエリを検討してください。
var result1 = (from f in list2
join b in list1 on f.index equals b.index into bf
from x in bf.DefaultIfEmpty()
select new { box = (x == null ? String.Empty : x.b), file = f.f });
var result2 = (from b in list1
join f in list2 on b.index equals f.index into bf
from x in bf.DefaultIfEmpty()
select new { l1 = x.f, l2 = (x == null ? String.Empty : b.b) });
1 つは list1 の null をテストして空の文字列を埋め、もう 1 つは list2 の null をテストして空の文字列を埋めます。
両方が発生する例を見つけたいと思います。順序は重要ではありません。左側のすべての値または空の文字列には、右側の値または空の文字列があるということだけです。