Учитывая следующие модели в 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? Или есть лучший способ получить желаемый результат?