我有一个包含对象列表的对象模型,这些对象具有一个被定义为short的属性。看起来有点像这样:
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();
是的,我在using语句中有System.Linq
。不知道为什么会掉线。
答案 0 :(得分:9)
Sum没有短暂的重载(Int16),即http://msdn.microsoft.com/en-us/library/system.linq.enumerable.sum.aspx
先进行演员表解析或进行.Sum(i => i)
答案 1 :(得分:1)
var TheSum = (from a in TheListOfMyObjects
where....
select (int)a.TheNumber).Sum();
答案 2 :(得分:0)
Sum
是System.Linq.Enumerable
中定义的IEnumerable<T>
的扩展方法。为了使用扩展方法,它需要在范围内,因此您需要将use添加到所需的命名空间。
using System.Linq;