【发布时间】:2020-06-02 05:19:58
【问题描述】:
这是我的场景...
假设我有这个类(称为 nf)w/values:
MyDate,Tons,ClientCode
25/12/2020,10,A
26/12/2020,5,A
27/12/2020,5,A
14/12/2020,7,A
11/12/2020,3,A
所以我编写了以下代码来对结果进行分组。
List<HC> nfs = (from n in ctx.nf
where n.ClientCode.StartsWith(CLIENT_CODE_STR)
let quinzena = $"{n.MyDate.Year}/{n.MyDate.Month}/{(n.DataEmissao.Day >= 1 && n.MyDate.Day <= 15 ? "1QZ" : "2QZ")}"
group n by new { quinzena } into g
select new { qnz = g.Key.quinzena, totalc = g.Sum(x => x.Tons) }
).Take(12)
.OrderByDescending(a => a.qnz)
.AsEnumerable()
.Select(r=> new HC{ Period = r.qnz, TotalTons = r.totalc }).ToList();
预期结果是:
Period,TotalTons
2020/12/1QZ,10
2020/12/2QZ,20
重点是 let 语句...用于正确分组数据... 当代码运行我得到这个错误......
LINQ to Entities 无法识别方法 'System.String 格式(System.String,System.Object,System.Object,System.Object)' 方法,并且该方法不能翻译成商店表达式。
有没有办法进行这种分组? 非常感谢
【问题讨论】:
-
您的
$"{n.MyDate.Year}/{n.MyDate.Month}/{(n.DataEmissao.Day >= 1 && n.MyDate.Day <= 15 ? "1QZ" : "2QZ")}"内插字符串将被替换为string.Format()。 your IQueryable 处理程序不支持 string.format,该处理程序创建 request/sql 语句。您是否尝试以旧方式连接它? -
是的...我试过...没有成功
标签: c# linq entity-framework-6 aggregate