У меня есть этот GroupJoin:Linq GroupJoin с DefaultIfEmpty
var groupjoin = cData.GroupJoin(
aData,
c => c.Id,
a => a.Id,
(c, joined) => new { c, a = joined.DefaultIfEmpty() })
.ToList();
В моих тестовых данных нет ни одного совпадения. Итак, у меня есть этот код:
var difference = groupjoin.FirstOrDefault(g =>
g.a == null);
Я ожидал difference
быть анонимный объект со свойством «с», который был объект из cData
, и свойство «а», который был нулевым.
Однако g.a == null
не является истинным, поэтому FirstOrDefault
дает мне нуль для difference
. g.a
есть, по сути, DefaultIfEmptyIterator
и g.a.ToList()
дает мне количество 1, и g.a.ToList[0] == null
истинно.
Что я здесь сделал неправильно?
Ваше предположение будет правильным, если вы используете 'Join'. 'GroupJoin' отличается, см. Ответ ниже. –