Вопрос по c#, linq – Реализовать логику «не в» (то есть «не существует») в LINQ

0
НастроитУ меня дваList<T> S. Данные не нормированы и получены из разных источников, что объясняет свертку в нужной логике Неофициальный составной ключ в данных - это fieldA, fieldB, fieldC. «Поля» - это строки - ссылочные типы, поэтому их значения могут быть нулевыми. Я хочу сбросить записи, где они могут совпадать на нуле. Я получаю, что нулевые ссылки в C # будут совпадать, но в SQL они не совпадают. Добавление!string.IsNullOrEmpty() достаточно просто. Это не вопрос дизайна БД или реляционной алгебры. У меня есть другая логика, которая охватывает другие критерии. Не предлагайте сокращать показанную логику, чтобы она могла расширить набор результатов. Смотрите № 5 выше.Проблем

Я хочу найти записи в списке A, которых нет в списке B, на основе неофициального ключа. Затем я хочу уточнить результаты listA на основе частичного совпадения ключей.

SQL-версия проблемы:

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  

Ваш Ответ

1   ответ
2

SQL к LINQ (Случай 7 - Фильтрация данных с использованием предложений IN и NOT IN)

Заметка IN и NOT IN используют одну и ту же функцию в запросе LINQ, но она просто использует! (не) символ для этого. Вот графическое представление:

Ты используешь,where <list>.Contains( <item> )

var myProducts = from p in db.Products
                 where productList.Contains(p.ProductID)
                 select p;

Или у вас может быть заранее заданный список:

var ids = {1, 2, 3};

var query = from item in context.items
            where ids.Contains( item.id )
            select item;

Для случая «НЕ» просто добавьте «!» оператор перед оператором «Содержит».

IComparable <T> .Equals () реализован для другого ключа. radarbob

Похожие вопросы