如何在linq查询中对不同的列进行分组?

时间:2010-11-04 16:59:12

标签: vb.net linq-to-sql

通过将两个sql表连接在一起来创建以下数据:

My data

我想将不同的DateStamp / UserName / StudentName / InstructorName / TableName / PrimaryKey(我称之为'组记录')组合在一起,然后在这些ColumnName / PreviousValue / NewValue下分组(我会称之为'子组记录')

最终的结果是我可以遍历'组记录' - 会有5.在每个'组记录'中,我可以遍历'子组记录'。这5组将分别包含3个,2个,5个,2个和1个子组记录。

创建查询以执行此操作的语法是什么?理想情况下,这将是一个vb.net linq语法。

1 个答案:

答案 0 :(得分:1)

只使用由这些属性组成的匿名密钥进行分组。以下是C#查询的语法:

var query = from row in joinedTable
            group new // subgroup record
                {
                    row.ColumnName,
                    row.PreviousValue,
                    row.NewValue
                }
            by new    // group record
                {
                    row.DateStamp,
                    row.UserName,
                    row.StudentName,
                    row.InstructorName,
                    row.TableName,
                    row.PrimaryKey
                };

相应的VB查询:

Dim query = From row In joinedTable    _
            Group                      _
                row.ColumnName,        _
                row.PreviousValue,     _
                row.NewValue           _
            By                         _
                row.DateStamp,         _
                row.UserName,          _
                row.StudentName,       _
                row.InstructorName,    _
                row.TableName,         _
                row.PrimaryKey         _
            Into SubGroup = Group