tsc*_*007 4 linq entity-framework
我将Linq与实体框架一起使用.
GetSet1<T>().Union(GetSet2<T>())
Run Code Online (Sandbox Code Playgroud)
GetSetX返回IQueryable.
生成的SQL是UNION ALL.但我知道UNION是实现目标的好方法.实际上我的解决方法是:
GetSet1<T>().Union(GetSet2<T>()).Distinct()
Run Code Online (Sandbox Code Playgroud)
在这种情况下生成的sql就像:
select distinct Field...
from (
select distinct Field...
union all
select distinct Field...
) unionall
Run Code Online (Sandbox Code Playgroud)
我知道(因为这是被认为的方式)
select Field...
union
select Field...
Run Code Online (Sandbox Code Playgroud)
是最好的查询.那么有没有办法(我可以(实际上找到)让EntityFramework使用UNION而不是UNION ALL?
==========
1:添加<T>更多精度
该Union()方法应该返回没有重复的结果.根据查询,EF将生成UNION ALLwith DISTINCT或just UNION,因此Distinct()不需要显式.LINQ的当量UNION ALL是Concat().
除此之外,EF还有为查询生成低效SQL的历史.如果可以,您应该使用EF 5.0,它大大改善了查询SQL的生成.
| 归档时间: |
|
| 查看次数: |
5378 次 |
| 最近记录: |