Linq к объектам: Объединения + Отличный

Я не знаю, как я могу сделать несколько объединений с отличным.

Когда я использую.Distinct с IEqualityComparer, исключение в бросило:

LINQ к Объектам не распознает метод 'Система. Linq. IQueryable'

Мой код

var union = query.Union(query1).Union(query2);
union = union.Distinct(new EqualityComparerTransaction());
10
задан Jon Skeet 19 February 2010 в 14:32
поделиться

1 ответ

LINQ to Entities не поддерживает перегрузку Distinct , которая принимает IEqualityComparer . Если подумать, это действительно невозможно, потому что запросы LINQ to Entities будут преобразованы в SQL, и вы не сможете преобразовать ссылку на интерфейс в SQL.

Следовательно, вы должны либо:

  1. использовать перегрузку Distinct , которая не выполняет никаких сравнений, либо
  2. перенести оба списка в пространство объектов и выполнить Distinct в LINQ to Objects, например:

     var union = query.Union (query1) .Union (query2); 
    union = union.AsEnumerable (). Distinct (new EqualityComparerTransaction ()); {{1 }} 

Естественно, существует риск того, что вы можете вернуть слишком много записей с сервера БД. Вы также можете использовать оба этих метода, чтобы выполнить часть сравнения на сервере, а другую часть - в пространстве объектов.

9
ответ дан 4 December 2019 в 01:56
поделиться
Другие вопросы по тегам:

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