0

オブジェクトのリストを含むオブジェクト モデルがあり、これらのオブジェクトには 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();

そうです、私はSystem.Linqusing ステートメントを持っています。反対票の理由がわからない。

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 に答える