2009-06-15 64 views
2

我使用以下計數結果LINQ

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 
      }; 

在這個現在我想知道,有沒有這個查詢返回的任何結果?這個怎麼做。

+4

除此之外:你可能以前聽說過,但:嘗試避免存儲密碼(甚至加密) - 對於大多數目的而言,加密哈希檢查就足夠了,沒有安全風險。 – 2009-06-15 07:26:53

回答

11

不要使用Count() - 使用Any()除非你真正關心的計數。

實際上,你可以簡化這個了很多,因爲你不使用的結果要麼休息:

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

的好處約Any()是,無論真實處理查詢能夠儘快它的發現停任意符合結果 - 它不需要一直在尋找其他潛在的匹配項目。 (Count()工作當然,它只是沒有效率,主要是因爲運營商本身並沒有描述你真正關心的準確。)

5

這應該工作:

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

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