LINQ 分组 - 获取其他未分组的属性

本文关键字:属性 其他 分组 获取 LINQ | 更新日期: 2023-09-27 18:31:56

我的LINQ查询(nHibernate)几乎没有问题

我需要具有相等属性符号的对象 znak 计数

我的查询:

            var tmp = (from znak in sesja.Query<Znak>()
                       group znak by znak.Symbol into r
                       select new { Name= r.Key.Name, SUM= r.Count() });

这个查询有效,但我需要使对象包含 znak 类的其他属性。

在这种情况下:select new { Name= r.Key.Name, SUM= r.Count() });我只能从 r.Key(符号属性)创建新对象。但是我的对象中需要其他属性。

可能吗?

LINQ 分组 - 获取其他未分组的属性

我建议使用 lambda Linq 语法:

var items = sesja.Query<Znak().AsEnumerable();
var newList = items.GroupBy(x=>x.Symbol).Select(
       x=> new { Name=x.Key.Name, Count = x.Count(), Items = x.ToList() });

阅读有关 Linq 语法 LINQ:点表示法与查询表达式的更多信息

我认为lambda syntax更具可读性,并且在代码中看起来更干净,因为它更像是 c# 样式而不是 sql 样式。

当然IL

代码不会有区别,总是可以安装resharper之类的工具,它们可以将lambda语法转换为类似sql的语法。

尝试类似

var tmp = (from znak in sesja.Query<Znak>()
           group znak by znak.Symbol into r
           select new { Name= r.Key.Name, SUM= r.Count(), Items = r.ToList() });

Items属性将包含组中的实际对象。