2015-05-14 56 views
0

我想知道當我使用帶和不帶AsQueryable()的IQueryable時會發生什麼。這裏有一個例子:使用帶和不帶AsQueryable的IQueryable()

public partial class Book 
{ 
....... 
public Nullable<System.DateTime> CheckoutDate{get; set;} 

} 

我需要它返回到應用程序服務器之前從SQL服務器過濾數據。 我需要退還比輸入日期更近的書籍。我應該使用哪一個?

A.

IQueryable<Book> books = db.Books; 
books = books.Where(b => b.CheckoutDate >= date); 

B.

IQueryable<Book> books = db.Books.ToList().AsQueryable(); 
books = books.Where(b => b.CheckoutDate >= date); 

基本上我想知道什麼是上述兩個方案之間的差異。他們是否從事類似的工作?他們返回相同的值嗎?

回答

1

使用B選項,基本上是從數據庫中檢索每本書並過濾內存中的數據。

選項具有更高的性能,因爲它可以過濾數據庫中的數據並僅返回與查詢匹配的行。