У меня есть запрос:
ctx.PrintJobs
.GroupBy(pj => pj.Department.Name)
.Select(g => new PrintJobReportItem
{
A3SizePercentage = g.Sum(p => p.DocumentSize == "a3" ? p.TotalPhisicalPages : 0d) / g.Sum(p => p.TotalPhisicalPages) * 100,
...
}
и все работает.
У меня есть много значений Perecentage для подсчета, поэтому я попытался изменить этот код на:
ctx.PrintJobs
.GroupBy(pj => pj.Department.Name)
.Select(g => new PrintJobReportItem
{
A3SizePercentage = g.PercentageOf(p => p.DocumentSize == "a3"),
...
}
...
public static class GroupingEx
{
public static double PercentageOf(this IGrouping<string, PrintJobItem> g, Func<PrintJobItem, bool> trueCondition)
{
return g.Sum(p => trueCondition(p) ? p.TotalPhisicalPages : 0d) / g.Sum(p => p.TotalPhisicalPages) * 100;
}
}
Но тогда я получаю ошибку:
System.NotSupportedException : LINQ to Entities does not recognize the method 'Double PercentageOf...
Я понимаю, почему я получаю эту ошибку.
Существуют ли другие способы извлечения группы методов, поддерживаемой Linq 2 Entity, в один метод? или я стек с копированием, вставляя те же биты кода?
Linq 2 Объект не является опцией