не содержит определения для ‘Sum’

#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. Это первая строка вопроса