Есть ли какое-либо преимущество в использовании любого из них для извлечения элементов из TableA, которые не имеют связанных элементов в TableB?
TableA
.GroupJoin(
TableB,
o => o.TableAID,
i => i.TableAID,
(o,i) => new {o, child = i.DefaultIfEmpty()})
.Where(x => x.child.Where(c => c != null).Count() == 0)
.Select(x => x.o);
или
TableA
.Where(a => !TableB.Select(b => b.TableAID).Contains(a.TableAID));
Я привык делать это с помощью левого внешнего соединения в SQL, которое используется в первом примере. Во втором примере используется подход «НЕ В», который я не использовал для этого раньше.
Оба способа возвращают одни и те же данные. Второй будет моим предпочтительным с точки зрения простоты. Есть ли у первого преимущества?
У вас есть другой способ сделать это?