zoukankan      html  css  js  c++  java
  • LinqToEntities:Union IEqualityComparer

    转自:http://stackoverflow.com/questions/2296966/linq-to-entities-unions-distinct

    Q:

    I don't know how I can do several union with a distinct.

    When I use .Distinct with an IEqualityComparer an exception in threw :

    LINQ to Entities does not recognize the method 'System.Linq.IQueryable'

    My code is

    var union = query.Union(query1).Union(query2); 
    union = union.Distinct(new EqualityComparerTransaction()); 
    

    A:

    LINQ to Entities does not support the overload of Distinct which takes an IEqualityComparer. When you think about it, it really can't, because LINQ to Entities queries will be converted to SQL, and you cannot convert an interface reference to SQL.

    Therefore, you must either:

    1. Use the overload of `Distinct` which does not take any compare, or 
    2.  Bring both lists into object space and do the `Distinct` in LINQ to Objects, like this: 
     
    var union = query.Union(query1).Union(query2); 
    union = union.AsEnumerable().Distinct(new EqualityComparerTransaction()); 
    

    Naturally, the risk here is that you might bring too many records back from the DB server. You could also use both of these techniques in order to do a portion of the comparison on the server and another portion in object space.

  • 相关阅读:
    .gitignore规则不生效的解决办法
    docker使用
    mysql 操作
    outlook转发问题
    我的梦想
    安静与流动
    sql 统计 学生成绩2
    sql 统计 关于学生成绩
    数据库备份
    web 注销回到登录页面
  • 原文地址:https://www.cnblogs.com/yangfan/p/1720981.html
Copyright © 2011-2022 走看看