2016-10-20 7 views
-1

の定義が含まれていない私は、私は私の構文を考えていますusing System.Linq;を持って間違っていることがありますが、私はそれをは「和」

public void Count() 
{ 
    var count = _context.Objects 
     .Select(i => new { i, ViewCount = i.Relations.Sum(j => j.ViewCount) }); 
} 
+0

i.Relationsに.ToList()が必要ですか? –

+2

リレーションは「IEnumerable 」ですか?そうでなければ、 'Sum'メソッドや他のLINQメソッドを使うことはできません。 – Christos

+3

'i.Relations'に' Sum'という名前のメソッドや拡張がない場合、 'i.Relations'の型と関係する可能性が非常に高いでしょう。ここの誰かが、あなたがしているよりも ''関連性 'のタイプについてもっと知っていると思いますか?それとも、どれくらい? –

答えて

-1

メンバーをもたらす者であるので、あなたが、

using System.Linq 

文を持っていることを確認してください。 using System.Linq;が含まれているので、最も可能性が高い説明はi.RelationsIEnumerable<T>を実装しないタイプと宣言されているということです。 i.Relationsはすべての種類のものですが、コンパイラがあなたにそれがないことがあると言っているように聞こえます。

-2

関係プロパティを参照することはできませんIEnumerableをする必要があります。それは合計拡張メソッドi.Relationsi.Relations種類によって決定された

+4

質問の最初の行です –

-1

ほとんどの場合、文字列または他のオブジェクト値コレクションを合計しようとしています。

合計の前に値を変換しようとすると、j.ViewCountが常に整数であることを確認する必要があります。そうでないと例外が発生します。以下のコードを試してください。

public void Count() 

{VARカウント= _context.Objects .Select(I =>新しい{I、再生回数= i.Relations.Sum(J => Convert.ToInt32(j.ViewCount))})。 }