gpt4 book ai didi

c# - Linq to Entities 中的自定义联盟

转载 作者:行者123 更新时间:2023-11-30 17:43:21 25 4
gpt4 key购买 nike

我需要在不使用 IEqualityComparer 的情况下将这些行合并到两个 ID 上,因为 LINQ to Entities 不支持这些行。

result 中,我需要 BizIdBazId 的每个唯一组合,如果id 对来自那里,否则该值应为零。这是一个大大简化的示例,实际上这些表非常大,无法在内存中完成这些操作。因此,此查询需要使用 LINQ to Entities,以便它可以转换为有效的 SQL 并在数据库上执行。我怀疑这可以通过 wherejoinDefaultIfEmpty() 而不是 Union 的某种组合来完成和 Distinct() 但我现在不知所措。

var foos = from f in Context.Foos where f.isActive select new { BizId = f.bizId, BazId = f.BazId, Value = f.Value };
var bars = from b in Context.Bars where b.isEnabled select new { BizId = b.bizId, BazId = b.BazId, Value = 0 };
var result = foos.Union(bars).Distinct(); //I need this to compare only BizId and BazId

最佳答案

您可以按这两个字段进行分组,然后获取每组的第一项:

foos.Union(bars).GroupBy(x => new { x.bizId, x.bazId })
.Select(g => g.FirstOrDefault())

关于c# - Linq to Entities 中的自定义联盟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31061633/

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