【发布时间】:2016-08-04 17:56:41
【问题描述】:
首先使用实体框架代码我有一个客户的 DbSet,每个客户都有一个 CustomerId:
public class Customer
{
public int CutomerId {get; set;}
...
}
public class MyDbContext : DbContext
{
public DbSet<Customer> Customers {get; set;
}
一切都相当标准。
不知何故,我选择了大量的 customerIds 作为 IEnumerable。我想用这个 customerId 查询所有客户,对选定的客户做一些繁重的 LINQ 工作。所以我需要类似的东西:
IEnumerable<int> customerIdsToProcess = ...
using (var myContext = new MyDbContext())
{
IQueryable<Customer> selectedCustomers = myContext.Customers
.Where(customer => customerIdsToProcess.Contains(customer.customerId);
但是,使用 Enumerable.Contains 会导致 SQL IN 语句,如果集合很大,则无法使用。
那么,如果您有一组 Id,并且想要获取具有该 Id 的元素的 IQueryable,该怎么办?
补充:想了想,这个问题有点假设。通常,您在本地没有数千个 Id,除非它们是查询的结果,因此可以在 IQueryable 中表示。因此,尽管知道如何执行此操作会很好,但如果我真的需要它,我想我做错了。
【问题讨论】:
-
如何拆分列表,根据该列表获取查询,然后合并查询?
标签: entity-framework linq