Y a-t-il un avantage à utiliser l'un de ces éléments pour récupérer des éléments de la TableA qui n'ont pas d'élément associé dans la TableB?GroupJoin vs. Où filtrer les éléments liés à null
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);
ou
TableA
.Where(a => !TableB.Select(b => b.TableAID).Contains(a.TableAID));
Je suis habitué à le faire avec une jointure externe gauche dans SQL, que le premier exemple type d'utilisations. Le second exemple utilise une approche de type "NOT IN", ce que je n'ai jamais utilisé auparavant.
Les deux méthodes renvoient les mêmes données. Le second serait mon préféré de la vue de la simplicité. Est-ce que le premier a des avantages?
Avez-vous une autre façon de procéder?