繁体   English   中英

LINQ分组-获取其他而不是分组的属性

[英]LINQ grouping - get other, not grouped properties

我的LINQ查询(nHibernate)没什么问题

我需要具有相等属性Symbol的对象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属性)创建新对象。 但是我的对象中需要其他属性。

可能吗 ?

我建议使用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属性将在组中包含实际对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM