与自定义比较器不同的是vauge错误

时间:2010-01-22 18:09:05

标签: c# collections lambda

我有以下代码:

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 个答案:

答案 0 :(得分:1)

由于PadDictionary,您需要IEqualityComparer<KeyValuePair<WorkItem, Canvas>>

因此,基本上,您传递给Distinct的比较器的类型不足。 :(

所以你是对的,基于提供的代码,看起来LambdaComparer不是问题。您只需要以不同方式定义“比较器”变量。