#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. Тем не менее, пожалуйста, не отвечайте на расплывчатые вопросы и не используйте ответы вместо комментариев. Вместо этого проголосуйте за закрытие.