Почему я не могу использовать .Any ()? - PullRequest
2 голосов
/ 05 февраля 2012

С самого начала я очень новичок в LINQ to SQL (и C # в целом) и до сих пор не реализовал .Any (). Я использую .Net 4.0 с Visual Studio 2010.

Я добавил новый набор данных LINQ to SQL в свой проект и пытаюсь сделать следующее:

var db = new HealthIndicatorsDataContext();

var d = DateTime.Today;

if(db.HealthIndicators.FirstOrDefault(h => h.LogDate == d).Any())
 // do something

К сожалению, я получаю Cannot Resolve Sysmbol 'Any', и .Any () выделяется красным. Я прочитал, что мне нужно сослаться на System.Core.dll в моем проекте, я добавил это, но мне все еще не повезло. Чего мне не хватает?

Ответы [ 2 ]

7 голосов
/ 05 февраля 2012
if(db.HealthIndicators.FirstOrDefault(h => h.LogDate == d).Any())

FirstOrDefault() возвращает отдельный элемент , а не IQueryable или IEnumerable - Any() определяется только для нихВероятно, вы хотели написать:

if(db.HealthIndicators.FirstOrDefault(h => h.LogDate == d) != null))

или (лучше):

if(db.HealthIndicators.Any(h => h.LogDate == d)))
6 голосов
/ 05 февраля 2012

FirstOrDefault () не возвращает коллекцию, поэтому Any () не имеет смысла.Вы можете заменить FirstOrDefault () на .Any (), если вам нужно только знать, существует ли хотя бы один.

if(db.HealthIndicators.Any(h => h.LogDate == d))
// do something
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...