我想知道在使用和不使用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);
基本上我想知道上面两个选项之间有什么区别。他们是否以类似的理由工作?他们是否返回相同的值?
答案 0 :(得分:1)
使用B选项,您基本上可以从数据库中检索每本书并过滤内存中的数据。
选项更具性能,因为它会过滤数据库中的数据并仅返回与您的查询匹配的行。