Я не знаю, как я могу сделать несколько объединений с отличным.
Когда я использую.Distinct с IEqualityComparer, исключение в бросило:
LINQ к Объектам не распознает метод 'Система. Linq. IQueryable'
Мой код
var union = query.Union(query1).Union(query2);
union = union.Distinct(new EqualityComparerTransaction());
LINQ to Entities не поддерживает перегрузку Distinct
, которая принимает IEqualityComparer
. Если подумать, это действительно невозможно, потому что запросы LINQ to Entities будут преобразованы в SQL, и вы не сможете преобразовать ссылку на интерфейс в SQL.
Следовательно, вы должны либо:
Distinct
, которая не выполняет никаких сравнений, либо перенести оба списка в пространство объектов и выполнить Distinct
в LINQ to Objects, например:
var union = query.Union (query1) .Union (query2);
union = union.AsEnumerable (). Distinct (new EqualityComparerTransaction ()); {{1 }}
Естественно, существует риск того, что вы можете вернуть слишком много записей с сервера БД. Вы также можете использовать оба этих метода, чтобы выполнить часть сравнения на сервере, а другую часть - в пространстве объектов.