我有以下代码:
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并手动获得它。)
答案 0 :(得分:1)
由于Pad
是Dictionary
,您需要IEqualityComparer<KeyValuePair<WorkItem, Canvas>>
。
因此,基本上,您传递给Distinct
的比较器的类型不足。 :(
所以你是对的,基于提供的代码,看起来LambdaComparer
不是问题。您只需要以不同方式定义“比较器”变量。