lu2*_*vik 10 c# union linq-to-entities distinct
我不知道我怎么能做一些与众不同的联盟.
当我使用带有IEqualityComparer的.Distinct时抛出异常:
LINQ to Entities无法识别方法'System.Linq.IQueryable'
我的代码是
var union = query.Union(query1).Union(query2);
union = union.Distinct(new EqualityComparerTransaction());
Run Code Online (Sandbox Code Playgroud)
LINQ to Entities不支持其重载Distinct需要IEqualityComparer.当你考虑它时,它确实不能,因为LINQ to Entities查询将被转换为SQL,而你无法将接口引用转换为SQL.
因此,您必须:
Distinct不进行任何比较,或将两个列表放入对象空间并Distinct在LINQ to Objects中执行,如下所示:
var union = query.Union(query1).Union(query2);
union = union.AsEnumerable().Distinct(new EqualityComparerTransaction());
Run Code Online (Sandbox Code Playgroud)当然,这里的风险是您可能会从DB服务器返回太多记录.您还可以使用这两种技术,以便在服务器上执行部分比较,在对象空间中执行另一部分.
| 归档时间: |
|
| 查看次数: |
14038 次 |
| 最近记录: |