У меня есть проблемы с помощью метода Count() в Linq вопрос:Аргумент 1: не удается преобразовать из 'System.Collections.Generic.IEnumerable <AnonymousType # 1>' на 'Int'
IEnumerable<BookListRecord> bookListRecord;
IEnumerable<Tuple<string, int>> listTeacher = new List<Tuple<string, int>>(
from b in bookListRecord
group b by b.Teacher into g
select new { g.Key, Count = g.Count()}
);
Я получаю сообщение об ошибке: Аргумент 1: не удается преобразовать из «System.Collections.Generic.IEnumerable <AnonymousType#1>
» до «» междунара
Когда я использую:
select new {g.Key, g.Count()}
Я получаю ошибки: Неверный анонимный пользователь типа описатель. Члены анонимного типа должны быть объявлены с назначением членов, простым именем или доступом к члену.
Как я могу подсчитать количество записей в списке? Спасибо за ответы.
Вы забыли удалить ключевое слово 'new', предшествующее' Tuple'. Другим подходом было бы сохранить анонимный тип, а затем использовать 'var' (неявное типирование) для' listTeacher'. Вам понадобится '(...). ToList()' вместо 'new List <...> (...)'. –
@JeppeStigNielsen Спасибо, обновлено. Надеюсь, теперь все в порядке. и btw технически 'ToList' и новый' List (IEnumerable) 'одинаковы. –
Да, они такие же. Я имел в виду, если вы сохранили анонимный тип, вы могли бы сделать это (из b в bookListRecord group b b.Teacher в g выберите новый {g.Key, Count = g.Count(),}). ToList() ', потому что type может быть выведен (метод 'TSource' в' ToList' метод выведен). С анонимными типами вы не можете использовать 'new List (...)', потому что для выражений для создания нового объекта параметр типа 'XXX' не может быть выведен (с C# 5). –