Zaimplementuj logikę „nie w” (inaczej „nie istnieje”) w LINQ
Ustawiaćmam dwa
List<T>
jest.Dane są unormowane i pochodzą z różnych źródeł, co wyjaśnia splot pożądanej logikiNieformalny klucz złożony w danych to fieldA, fieldB, fieldC.„Pola” są ciągami znaków - typami referencyjnymi - więc ich wartości mogą być puste. Chcę usunąć rekordy, które mogą pasować na wartości null. Dostaję, że null referencje w C # będą pasować, ale w SQL nie. Dodawanie a!string.IsNullOrEmpty()
jest dość łatwe.To nie jest pytanie o projekt DB lub relacyjną algebrę.Mam inną logikę, która obejmuje inne kryteria. Nie sugeruj zmniejszania przedstawionej logiki tak, aby mogła ona poszerzyć zestaw wyników. Patrz # 5 powyżej.ProblemChcę znaleźć rekordy w listA, które nie znajdują się w listB na podstawie nieformalnego klucza. Następnie chcę jeszcze bardziej zawęzić wyniki listyA na podstawie częściowego dopasowania klucza.
Wersja SQL problemu:
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