0

我有一个包含对象列表的对象模型,这些对象具有定义为短的属性。它看起来有点像这样:

public class MyObject
{
   public short TheNumber { get; set;}
}

List<MyObject> TheListOfMyObjects = SomeMethodThatReturnsList();

现在我想对列表中所有对象的 TheNumber 进行求和,所以我写了这个:

var TheSum = (from a in TheListOfMyObjects 
              where....
              select a.TheNumber).Sum();

我收到一条错误消息,提示 Sum() 没有定义。为什么这不起作用,我该如何解决?

编辑:

我有这个工作:

var TheCount = (from a in TheListOfMyObjects 
                where....
                select a).Count();

所以是的,我System.Linq在 using 声明中。不知道为什么反对票。

4

3 回答 3

10

Sum 没有简称重载(Int16),即http://msdn.microsoft.com/en-us/library/system.linq.enumerable.sum.aspx

要么先转换/解析,要么做.Sum(i => i)

于 2013-01-20T19:30:39.327 回答
1
var TheSum = (from a in TheListOfMyObjects 
          where....
          select (int)a.TheNumber).Sum();
于 2013-01-20T19:39:24.937 回答
0

SumIEnumerable<T>是 中定义的扩展方法System.Linq.Enumerable。为了使用扩展方法,它需要在范围内,因此您需要将 using 添加到所需的命名空间。

using System.Linq;
于 2013-01-20T19:27:06.530 回答