2014-04-20 5 views
0

У меня есть проблемы с помощью метода 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()} 

Я получаю ошибки: Неверный анонимный пользователь типа описатель. Члены анонимного типа должны быть объявлены с назначением членов, простым именем или доступом к члену.

Как я могу подсчитать количество записей в списке? Спасибо за ответы.

ответ

1

Проблема заключается в том, что вы ввели вашу переменную как IEnumerable<Tuple<string, int>>, но вы создаете анонимный тип, используя select new {g.Key, g.Count()}. Измените его на следующее.

IEnumerable<Tuple<string, int>> listTeacher = 
             (from b in bookListRecord 
              group b by b.Teacher into g 
              select Tuple.Create(g.Key, g.Count())) 
             .ToList() 
+0

Вы забыли удалить ключевое слово 'new', предшествующее' Tuple'. Другим подходом было бы сохранить анонимный тип, а затем использовать 'var' (неявное типирование) для' listTeacher'. Вам понадобится '(...). ToList()' вместо 'new List <...> (...)'. –

+0

@JeppeStigNielsen Спасибо, обновлено. Надеюсь, теперь все в порядке. и btw технически 'ToList' и новый' List (IEnumerable) 'одинаковы. –

+0

Да, они такие же. Я имел в виду, если вы сохранили анонимный тип, вы могли бы сделать это (из b в bookListRecord group b b.Teacher в g выберите новый {g.Key, Count = g.Count(),}). ToList() ', потому что type может быть выведен (метод 'TSource' в' ToList ' метод выведен). С анонимными типами вы не можете использовать 'new List (...)', потому что для выражений для создания нового объекта параметр типа 'XXX' не может быть выведен (с C# 5). –

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

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