<:> Frage:
So verwenden Sie LINQ, um eine vollständige externe Verbindung in den beiden Objektlisten durchzuführen, auch wenn einige Objekte in der Liste vorhanden sind?
Erläuterung:
Interne Verbindung: Elemente mit entsprechenden Schlüssel in den beiden Listen werden beseitigt, um Elemente ohne entsprechende Elemente auszuschließen.
Zwei Listen A und B, um verbunden zu werden.
Geben Sie die Schlüsselanwendung der Objekte in A und B als Verbindungsschlüssel an, die die Schlüsselanwendung der Objekte in A und B ausgewählt hat.
<code class="language-csharp">internal static IEnumerable<TResult> FullOuterJoin<TA, TB, TKey, TResult>( this IEnumerable<TA> a, IEnumerable<TB> b, Func<TA, TKey> selectKeyA, Func<TB, TKey> selectKeyB, Func<TA, TB, TKey, TResult> projection, TA defaultA = default(TA), TB defaultB = default(TB), IEqualityComparer<TKey> cmp = null) { cmp = cmp ?? EqualityComparer<TKey>.Default; var alookup = a.ToLookup(selectKeyA, cmp); var blookup = b.ToLookup(selectKeyB, cmp); var keys = new HashSet<TKey>(alookup.Select(p => p.Key), cmp); keys.UnionWith(blookup.Select(p => p.Key)); var join = from key in keys from xa in alookup[key].DefaultIfEmpty(defaultA) from xb in blookup[key].DefaultIfEmpty(defaultB) select projection(xa, xb, key); return join; }</code>
Verwenden Sie diese Werte, wenn in einer anderen Liste kein entsprechendes Element in einer anderen Liste entsprechend Element vorhanden ist.
Das obige ist der detaillierte Inhalt vonWie führe ich mit LINQ einen vollständigen äußeren Join auf zwei Listen durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!