gpt4 book ai didi

c# - Linq 到实体 : Unions + Distinct

转载 作者:可可西里 更新时间:2023-11-01 09:09:40 24 4
gpt4 key购买 nike

我不知道如何用不同的方式进行多个联合。

当我将 .Distinct 与 IEqualityComparer 一起使用时,抛出异常:

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

我的代码是

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

最佳答案

LINQ to Entities 不支持采用 IEqualityComparerDistinct 重载。仔细想想,确实不行,因为 LINQ to Entities 查询会被转换为 SQL,而你不能将接口(interface)引用转换为 SQL。

因此,您必须:

  1. 使用不进行任何比较的 Distinct 的重载,或者
  2. 将两个列表放入对象空间并在 LINQ to Objects 中执行 Distinct,如下所示:

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

当然,这里的风险是您可能从数据库服务器带回太多记录。您也可以同时使用这两种技术,以便在服务器上进行一部分比较,在对象空间中进行另一部分比较。

关于c# - Linq 到实体 : Unions + Distinct,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2296966/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com