【发布时间】:2020-04-18 01:54:33
【问题描述】:
鉴于 EF Core 2.2 中的以下模型:
public class A
{
public int Id { get; set; }
public ICollection<B> Bs { get; set; }
}
public class B
{
public int Id { get; set; }
public int AId { get; set; }
public ICollection<C> Cs { get; set; }
}
public class C
{
public int Id { get; set; }
public int BId { get; set; }
public long? DId { get; set; }
}
public class D
{
public long Id { get; set; }
}
我想执行这个查询:
from a in context.Set<A>()
from b in a.Bs
from c in b.Cs
where c.DId.HasValue
group c by c.DId.Value into g
select new
{
g.Key,
Count = g.Count() - 1
}
但是当我尝试执行此操作时,我得到:
无法翻译 LINQ 表达式“
GroupBy(Convert([b.Cs].DId, Int64), [b.Cs])”,将在本地计算。
我参考了这些:
但我似乎无法正确编写查询。这在 EF Core 2.2 上可行吗?或者有没有更好的方法来获得我正在寻找的结果?
【问题讨论】:
标签: c# linq entity-framework-core ef-core-2.2