2010-04-08 75 views
1

如何使這個方法根據查詢返回返回布爾值。假 - 沒有,真 - 數據存在。在我剛剛從uniqueQuote.Count()返回int之前,但看起來不是很好的方法。謝謝!ASP.NET檢查LinqToEntities是否返回一些東西

private bool CheckEnquiryUser(int enquiryId, Guid userId) 
      { 
       int selectedEnquiryId = enquiryId; 
       Guid currentUserId = userId; 
       Entities ctx3 = new Entities(); 
       var uniqueQuote = from quot in ctx3.Enquiries.Include("aspnet_Users") 
            where quot.EnquiryId == selectedEnquiryId && 
            quot.aspnet_Users.UserId == currentUserId 

           select quot; 

      bool exist = uniqueQuote; 
      return exist; 

回答

1

使用Enumerable.Any method

return uniqueQuote.Any(); 

,要麼謂詞直接傳遞給它:

return ctx3.Enquiries.Include("aspnet_Users") 
      .Any(quot => quot.EnquiryId == selectedEnquiryId 
         && quot.aspnet_Users.UserId == currentUserId); 
0

試着這麼做:

return uniqueQuote.Count() > 0; 
+0

當你的意思是'.Any()';後者效率更高,尤其是在轉換爲SQL時。 – 2010-04-08 20:50:49

+0

非常真實,沒有想到「任何」。但是,如果您已將結果保存在集合中,則.Count> 0可能是最快的方式。 – 2010-04-08 20:51:53

+0

取決於集合。如果它是一個鏈表,Count()將比Any()更慢。如果是'List ',性能應該是相似的。 *然而,*'.Any()'將總是更有表現力,'Count()> 0'更爲強制。 – 2010-04-08 21:28:43

1

我更習慣這種格式,但你c一個翻譯使用。任何

return ctx3.Enquiries.Include("aspnet_Users") 
    .Any(x=> x.EnquiryId == selectedEnquiryId && 
      x.aspnet_Users.UserId == currentUserId); 
相關問題