2016-10-20 5 views
-1

У меня есть using System.Linq; так что я имею в виду мой синтаксис должен быть неправильно, но я не могу видеть, что этоне содержит определения для «Сумма»

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

Вам нужен .ToList() на i.Relations? –

+2

Отношения «IEnumerable » или нет? Если это не так, вы не можете использовать метод 'Sum' или любой другой метод LINQ. – Christos

+3

Если 'i.Relations' не имеет метода или расширения с именем' Sum', это, скорее всего, имеет отношение к типу 'i.Relations'. Как вы думаете, кто-нибудь здесь знает больше о типе 'i.Relations', чем вы? Или даже так много? –

ответ

-1

Члены, которые i.Relations уже определяются по типа из i.Relations. Поскольку вы включили using System.Linq;, безусловно, наиболее вероятным объяснением является то, что i.Relations объявлен как некоторый тип, который не реализует IEnumerable<T>. i.Relations может быть всевозможными вещами, но похоже, что компилятор говорит вам, что есть одна вещь.

-2

отношения собственности должны быть IEnumerable. Убедитесь, что у вас есть

using System.Linq 

предложение, потому что это, кто приносит метод расширения Sum

+4

Это первая строка вопроса –

-1

Скорее всего, вы пытаетесь суммировать строку или любую другую стоимость объекта.

Попробуйте преобразовать значение перед суммой, вы должны убедиться, что j.ViewCount всегда целое, иначе вы получите исключение. Пожалуйста, попробуйте приведенный ниже код.

public void Count() 

{ граф переменная = _context.Objects .Select (я => новый {я, = i.Relations.Sum количестве просмотров (J => Convert.ToInt32 (j.ViewCount))}); }

Смежные вопросы