我有一个继承自BindingList
的集合类,我可以使用Sum
函数,例如myList.Sum(x=>x.Quantity)
。
但是当我实现接口IEnumerable<SqlDataRecord>
时,我再也无法使用它,x.Quantity
不作为选项提供。我该如何解决这个问题?
class item
{
public decimal Quantity { get; set; }
}
class items : BindingList<T>
{
}
items newItems = new items();
items.Sum(x=>x.Quantity);
上面的代码有效但是当我添加以下代码时它不再起作用了。它说该课程没有Sum
的定义。我做错了什么?
class items : BindingList<T>, IEnumerable<SqlDataRecord>
{
}
items.Sum(x=>x.?);
答案 0 :(得分:3)
当您的班级仅继承BindingList<T>
时,myList.Sum(...)
通过Enumerable<T>.Sum(myList, ...)
的{{1}}继承来明确地调用BindingList<T>
。
现在,您已让您的班级直接实施Collection<T>
,不再清楚 IEnumerable<SqlDataRecord>
调用Enumerable<?>
的类型 - 是{{1}你的Sum
继承是?
还是你的直接实施是T
?
(出于某种原因,我的VS将此报告为“不包含定义......”而不是模糊的呼叫。)
因此,如果您希望像以前一样进行通话,则必须明确调用BindingList
。