cos*_*set 3 .net c# linq-to-entities entity-framework
我使用实体框架.我需要concat两个集合.例如:
IQueryable<SomeType> collection1 = context.Entiies.Where(predicate);
IQueryable<SomeType> collection2 = context.Entiies.Where(otherPredicate);
var result = collection1.concat(collection2).toList(); //1
var result = collection1.union(collection2).toList; //2
Run Code Online (Sandbox Code Playgroud)
1和2变体都将在数据库中执行2个请求,因为这些方法需要IEnumerable作为参数.所以问题是我可以通过一个数据库调用来连接两个Iqueryble集合
有Concat()和Union()用于扩展方法IQueryable<T>除了IEnumerable<T>.您可以在可查询对象上使用它们. Union()映射到SQL UNION操作并Concat()映射到UNION ALL.
只要您不将IQueryable<T>对象转换为IEnumerable<T>(显式或隐式),您就可以使用这些方法,如果可能的话,它们将在数据库中进行评估.
进一步阅读:
Queryable.NET 4.5中的类的MSDN文档.这记录了可能在数据库中而不是在CLR中评估的所有扩展方法.在浏览文档的过程中,我将在Queryableaccept上声明的扩展方法的详细信息IQueryable<T>作为第一个参数,但IEnumerable<T>作为第二个参数.正如D Stanley所指出的,这些方法将测试参数是否为a IQueryable<T>,如果是,将尝试使用相关查询引擎解析操作.
| 归档时间: |
|
| 查看次数: |
3269 次 |
| 最近记录: |