Implementieren Sie die Logik "nicht in" (auch bekannt als "nicht vorhanden") in LINQ

Konfigurationich habe zweiList<T>'s.Die Daten sind nicht normalisiert und stammen aus verschiedenen Quellen, was die Faltung in der gewünschten Logik erklärtEin informeller zusammengesetzter Schlüssel in den Daten ist fieldA, fieldB, fieldC.Die "Felder" sind Zeichenfolgen - Referenztypen - daher können ihre Werte null sein. Ich möchte Datensätze dort ablegen, wo sie möglicherweise mit Null übereinstimmen. Ich erhalte, dass null Verweise in C # übereinstimmen, in SQL jedoch nicht. Hinzufügen eines!string.IsNullOrEmpty() ist einfach genug.Dies ist keine Frage zum DB-Design oder zur relationalen Algebra.Ich habe eine andere Logik, die andere Kriterien abdeckt. Schlagen Sie nicht vor, die angezeigte Logik zu reduzieren, um die Ergebnismenge zu erweitern. Siehe Nr. 5 oben.Das Problem

Ich möchte die Datensätze in Liste A finden, die nicht in Liste B enthalten sind, basierend auf dem informellen Schlüssel. Ich möchte dann die Ergebnisse von listA basierend auf einer partiellen Schlüsselübereinstimmung weiter verfeinern.

Die SQL-Version des Problems:

select 
    listA.fieldA, listA.fieldB, matching.fieldC  
 from listA
 left join listB keyList on 
      listA.fieldA = keyList.fieldA and
      listA.fieldB = keyList.fieldB and
      listA.fieldC = keyList.fieldC
 inner join listB matching on
      listA.fieldA = matching.fieldA and
      listA.fieldB = matching.fieldB 
 where
    keyList.fieldA is null  

Antworten auf die Frage(1)

Ihre Antwort auf die Frage