Подсчет результата LINQ - PullRequest
2 голосов
/ 15 июня 2009

Я использую следующее

var validLogin = from P in this.DataContext.Persons
                         where P.UserName.Equals(login) && P.Password.Equals(password)
            select new
            {
                P.FirstName,
                P.LastName,
                P.EmailAddress
            };

Теперь я хочу знать, есть ли результат, возвращаемый этим запросом? Как это сделать

Ответы [ 3 ]

11 голосов
/ 15 июня 2009

Не используйте Count() - используйте Any(), если только вы не заботитесь о счете.

Вы можете значительно упростить это, потому что вы не используете остальные результаты:

bool validLogin = DataContext.Persons.Any(p => p.UserName == login &&
                                               p.Password == password);

Приятной особенностью Any() является то, что все, что обрабатывает запрос, может быть остановлено, как только будет найдено любое совпадение результатов - ему не нужно постоянно искать другие потенциальные совпадения. (Count() будет работать конечно, это просто не так эффективно, в основном потому, что сам оператор не так точно описывает, что вас действительно волнует.)

5 голосов
/ 15 июня 2009

Это должно работать:

if (validLogin.Count() > 0) 
{
     //do work
}
0 голосов
/ 15 июня 2009

if (validLogin.Count() > 0){}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...