2016-10-20 6 views
-1

Ich habe using System.Linq; so denke ich meine Syntax falsch sein muss, aber ich kann es nicht sehenkeine Definition für ‚Sum‘ enthalten

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

Benötigen Sie eine .ToList() auf i.Relations? –

+2

Sind Beziehungen ein 'IEnumerable ' oder nicht? Ist dies nicht der Fall, können Sie weder die Sum-Methode noch eine andere LINQ-Methode verwenden. – Christos

+3

Wenn 'i.Relations' keine Methode oder Erweiterung namens' Sum' hat, hat das sehr wahrscheinlich etwas mit dem Typ von 'i.Relations' zu tun. Glaubst du, dass irgendjemand hier mehr über die Art von "i.Relations" weiß als du? Oder sogar so viel? –

Antwort

-1

Die Mitglieder bringt, dass i.Relations durch den Typ von i.Relations bestimmt werden. Da Sie using System.Linq; einbezogen haben, ist bei weitem die wahrscheinlichste Erklärung, dass i.Relations als ein Typ deklariert ist, der IEnumerable<T> nicht implementiert. i.Relations könnten alle möglichen Dinge sein, aber es klingt, als ob der Compiler dir sagt, dass es eine Sache gibt, die es nicht ist.

-2

Relations Eigenschaft sollte ein IEnumerable sein. Seien Sie sicher, dass Sie die

using System.Linq 

Satz, weil es ist, die die Summe Erweiterungsmethode

+4

Das ist die erste Zeile der Frage –

-1

Sie versuchen höchstwahrscheinlich, eine Zeichenfolge oder eine andere Objektwertauflistung zu summieren.

Bitte versuchen Sie, den Wert vor der Summe zu konvertieren, Sie müssen sicherstellen, dass j.ViewCount immer Ganzzahl ist, sonst haben Sie eine Ausnahme. Bitte versuchen Sie den folgenden Code.

public void Count() 

{ var count = _context.Objects .Select (i => new {i, Viewcount = i.Relations.Sum (j => Convert.ToInt32 (j.ViewCount))}); }

Verwandte Themen