使用带有和不带AsQueryable的IQueryable()

时间:2015-05-14 11:39:04

标签: entity-framework ado.net

我想知道在使用和不使用AsQueryable()时使用IQueryable会发生什么。这是一个例子:

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

} 

我需要在SQL服务器返回到应用程序服务器之前过滤数据。 我需要退回最近检出的图书而不是输入日期。我应该使用哪一个?

一个。

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

答案 0 :(得分:1)

使用B选项,您基本上可以从数据库中检索每本书并过滤内存中的数据。

选项更具性能,因为它会过滤数据库中的数据并仅返回与您的查询匹配的行。