1

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

可能吗 ?

4

2 回答 2

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:点表示法与查询表达式

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

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

于 2013-09-18T20:01:47.820 回答
3

尝试类似的东西

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

于 2013-09-18T19:58:53.533 回答