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

时间:2013-09-18 19:52:51

标签: c# linq nhibernate fluent-nhibernate group-by

我的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( Symbol 属性)创建新对象。但我需要 new 对象中的其他属性。

有可能吗?

2 个答案:

答案 0 :(得分:4)

我建议使用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: Dot Notation vs Query Expression

我认为lambda syntax更具可读性,在代码中看起来更干净,因为它更具有c#风格而不是sql风格。

当然IL代码没有区别,总是可以安装像resharper这样的工具,它们可以将lambda语法转换为类似sql的语法。

答案 1 :(得分:2)

尝试类似

的内容
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属性将包含组中的实际对象。

相关问题