Отличие от пользовательского компаратора дает ошибочную ошибку - PullRequest
3 голосов
/ 22 января 2010

У меня есть следующий код:

IEqualityComparer<WorkItem> comparer = 
     new LambdaComparer<WorkItem>((item1, item2) => item1.Type == item2.Type);

var someVar = Pad.Distinct(comparer);

(идея состоит в том, чтобы получить 1 каждого типа)
И это дает следующее сообщение об ошибке:

The type arguments for method 'System.Linq.Enumerable.Distinct
(System.Collections.Generic.IEnumerable, 
System.Collections.Generic.IEqualityComparer)' cannot be inferred 
from the usage. Try specifying the type arguments explicitly.   490

Я сделал что-то похожее, и все работает отлично:

Pad = new Dictionary<WorkItem, Canvas>(new LambdaComparer<WorkItem>((x, y) => x.Id == y.Id, x => x.Id));

Так что я не думаю, что это мой класс LamdaComparer.

Есть идеи, как это исправить? (Полагаю, я мог бы просто сделать ForEach и получить отличительное вручную.)

1 Ответ

1 голос
/ 22 января 2010

Поскольку Pad является Dictionary, вам необходимо IEqualityComparer<KeyValuePair<WorkItem, Canvas>>.

Итак, в общем, типопараметры компаратора, который вы передаете Distinct, недостаточны. (

Итак, вы правы, основываясь на предоставленном коде, похоже, что LambdaComparer не проблема. Вам просто нужно по-разному определить переменную "Comparer".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...