我看到很多帖子都在讨论IEnumerable
它在内存中应用过滤而不是像IQueryable
这样的SQL服务器。
但是,
我的20 records
表格中有only one has Id = '12345'
。
当我做的时候
IEnumerable<Customer> customer = _context.Customer.where(x => x.Id== '12345');
返回1
行和not of 20
行。
为什么呢?
我的理解是它最初会返回20行,后来当我做
时var result = customers.ToList();
它将返回1条记录。
答案 0 :(得分:0)
此时,您在IQueryable界面上执行where
。 (请记住,=
的右侧先执行,然后执行左侧)
IEnumerable<Customer> customer = _context.Customer.Where(x => x.Id == 12345);
你所读到的是这样的:
IEnumerable<Customer> customers = _context.Customer
IEnumerable<Customer> clientFiltered = customers.Where(x => x.Id == 12345);
如果你想这样做oneliner:
_context.Customer.AsEnumerable().Where(x => x.Id == 12345);
注意,在后两种情况下,您首先将其投放到IEnumerable
,然后执行更具体的Where
。