2010-06-14 80 views
0

我正在構建一個使用LINQ to SQL的ASP.NET MVC網站。延遲LINQ to SQL選擇查詢執行

在我的搜索方法,有一些必需的和一些可選參數,我想建立一個LINQ查詢,同時測試這些可選參數的存在。


這裏就是我目前想:

using(var db = new DBDataContext()) 
     { 
      IQueryable<Listing> query = null; 

      //Handle required parameter 
      query = db.Listings.Where(l => l.Lat >= form.bounds.extent1.latitude && l.Lat <= form.bounds.extent2.latitude); 

      //Handle optional parameter 
      if (numStars != null) 
       query = query.Where(l => l.Stars == (int)numStars); 

      //Other parameters... 

      //Execute query (does this happen here?) 
      var result = query.ToList(); 

      //Process query... 

請問這個實施「捆綁」 的where條款,然後執行捆綁的查詢?如果不是,我應該如何實現這個功能?

另外,還有什麼我可以改進的?

在此先感謝。

回答

7

是的,查詢將只會被調用一次ToList()被調用。如果您遵循此模式並使用匿名類型,請注意OrderBy()返回IOrderedQueryable而不是IQueryable

請注意,您只能迭代IQueryable,您無需撥打ToList即可訪問數據。