实现IEnumerable <sqldatarecord>时无法访问'Sum'函数</sqldatarecord>

时间:2012-09-24 10:28:03

标签: c# .net class

我有一个继承自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.?);

1 个答案:

答案 0 :(得分:3)

当您的班级仅继承BindingList<T>时,myList.Sum(...)通过Enumerable<T>.Sum(myList, ...)的{​​{1}}继承来明确地调用BindingList<T>

现在,您已让您的班级直接实施Collection<T>,不再清楚 IEnumerable<SqlDataRecord>调用Enumerable<?>类型 - 是{{1}你的Sum继承是?还是你的直接实施是T

(出于某种原因,我的VS将此报告为“不包含定义......”而不是模糊的呼叫。)

因此,如果您希望像以前一样进行通话,则必须明确调用BindingList