#c# #asp.net-mvc
#c# #asp.net-mvc
Вопрос:
У меня есть using System.Linq;
поэтому я думаю, что мой синтаксис должен быть неправильным, но я этого не вижу
public void Count()
{
var count = _context.Objects
.Select(i => new { i, ViewCount = i.Relations.Sum(j => j.ViewCount) });
}
Комментарии:
1. Вам нужен . ToList() для i.Relations?
2. Являются ли отношения
IEnumerable<T>
или нет? Если это не так, то вы не можете использоватьSum
метод или любой другой метод LINQ.3. Если
i.Relations
у него нет метода или расширения с именемSum
, это, скорее всего, как-то связано с типомi.Relations
. Как вы думаете, кто-нибудь здесь знает о типеi.Relations
больше, чем вы? Или даже столько же?4. Каков тип
Relations
свойства?5. Это была проблема, отношения были объектом, а не IEnumerable. Я хотел бы отметить ответ как правильный ^. ^ Если бы кто-нибудь опубликовал это, это было бы потрясающе. Спасибо, ребята!
Ответ №1:
Элементы, которые i.Relations
имеют, определяются типом i.Relations
. Поскольку вы включили using System.Linq;
, безусловно, наиболее вероятным объяснением является то, что i.Relations
объявлено как некоторый тип, который не реализует IEnumerable<T>
. i.Relations
может быть что угодно, но звучит так, будто компилятор говорит вам, что есть одна вещь, которой это не является.
Ответ №2:
Скорее всего, вы пытаетесь суммировать строку или любую другую коллекцию значений объекта.
Пожалуйста, попробуйте преобразовать значение перед sum, вы должны убедиться, что j.viewCount всегда является целым числом, иначе вы получите исключение. Пожалуйста, попробуйте приведенный ниже код.
public void Count()
{
количество переменных = _context.Objects
.Выберите(i => создать { i, viewCount = i.Relations.Sum(j => Преобразовать.ToInt32(j.viewCount)) });
}
Ответ №3:
Свойство Relations должно быть IEnumerable. Убедитесь, что у вас есть
using System.Linq
предложение, потому что это тот, кто предлагает метод расширения Sum
Комментарии:
1. Это первая строка вопроса