我有BindingList的自定义子类< T>我想使用方便的扩展方法执行LINQ查询。例如:
public int GetSum(MyList<T> list)
{
return list.Sum(x => x.Value);
}
但是编译器抱怨它无法解析Sum
,因为它无法将list
识别为IEnumerable<T>
,显然这是因为它有效:
public int GetSum(MyList<T> list)
{
return ((IEnumerable<T>)list).Sum(x => x.Value);
}
任何人都有一个聪明的方法可以避免丑陋和不必要的演员?
答案 0 :(得分:1)
看起来编译器可能会抱怨Sum
试图执行的类型参数,因为它无法推断。您可以像这样指定类型参数;其中T是您要执行Sum
的类型。
return list.Sum<T>(x => x.Value);
但是应该注意的是,即使在没有设置类型参数的情况下恢复到基础BindingList<T>
,您的样本也都不会为我编译。