не удается неявно преобразовать тип «System.Коллекции.Универсальный.IEnumerable» в ‘»int»

#c# #linq #compiler-errors

#c# #linq #ошибки компилятора

Вопрос:

У меня есть следующий класс и коллекция books, которая состоит из объектов класса Book. Я должен написать linq-запрос, который выбирает книгу, написанную между 1900 и 2000 годами

 class Book
{
    public string Title { set; get; }
    public int Year { set; get; }
} 

var v =  from book in books
         where book.Year > 1900 amp;amp; book.Year < 2000
         select book;
  

Но я получил ошибку компилятора :

 error CS0029: cannot implicitly convert type "System.Collections.Generic.IEnumerable<Book>" to "int"
  

Что я делаю не так?

Комментарии:

1. Опубликуйте код, в котором вы инициализируете IEnumerable<Book>, т.е. экземпляр books

2. Предоставленный вами код показывает только класс и выполняемый вами запрос Linq, но не фактическую строку, с которой вы столкнулись с проблемой. Не могли бы вы показать нам больше вашего кода?

3. Это весь ваш код? Я не вижу, где могла бы возникнуть эта ошибка, поскольку ваш запрос LINQ выглядит правильным. Пожалуйста, опубликуйте код, в котором вы работаете с var v переменной.

Ответ №1:

Список со всеми вашими книгами

 List<Book> books = new List<Book> {...}
  

Количество обращений, которые вы хотите

 int counts = books.Count(p => p.Year > 1900 amp;amp; p.Year< 2000);
  

код не проверен, но я думаю, что он должен работать.

Комментарии:

1. Я думаю, что он ищет объекты book, а не только количество

2. tbh, вопрос настолько расплывчатый, что единственное целое число, которое может быть получено из этого, основываясь на его описании, — это количество книг с этими условиями. Я бы опубликовал это как комментарий вместо ответа, если бы мог

3. Тем не менее, пожалуйста, не отвечайте на расплывчатые вопросы и не используйте ответы вместо комментариев. Вместо этого проголосуйте за закрытие.