计算结果LINQ

时间:2009-06-15 07:19:58

标签: c# linq linq-to-sql

我正在使用以下

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 个答案:

答案 0 :(得分:11)

请勿使用Count() - 使用Any(),除非您真正关心计数。

您实际上可以对此进行简化,因为您不会使用其余结果:

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

关于Any()的好处是,无论处理什么,查询都可以在找到任何匹配结果后立即停止 - 它不需要继续寻找其他可能的匹配。 (Count()当然会工作,它只是效率不高,主要是因为操作员本身并没有准确地描述你真正关心的内容。)

答案 1 :(得分:5)

这应该有效:

if (validLogin.Count() > 0) 
{
     //do work
}

答案 2 :(得分:0)

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