我不知道第一个“带有样本数据的结果”是从哪里来的,但是控制台应用程序中的问题是您正在
SelectMany查看 每个组中的每个项目 。
我想您只想要:
List<ResultLine> result = Lines .GroupBy(l => l.ProductCode) .Select(cl => new ResultLine { ProductName = cl.First().Name, Quantity = cl.Count().ToString(), Price = cl.Sum(c => c.Price).ToString(), }).ToList();使用
First()此处获得产品名称的假设是,具有相同产品代码的每个产品都具有相同的产品名称。如注释中所述,您可以按产品名称和产品代码进行分组,如果名称对于任何给定代码始终相同,则将给出相同的结果,但是显然可以在EF中生成更好的SQL。
我还建议您分别将
Quantity和
Price属性分别更改为
int和
decimal类型-为什么要对明显不是文本的数据使用字符串属性?



