具有复合键字段的DataTable Pivot方法

时间:2010-07-29 18:13:38

标签: c# .net datatable

我需要一个C#方法,可以在源表包含复合键的位置转动DataTable / IDataReader对象。

我想用这个:http://weblogs.sqlteam.com/jeffs/articles/5091.aspx 但它仅适用于单个键列。

没有SQL。它必须是C#。

2 个答案:

答案 0 :(得分:1)

您可以使用LINQ:

myDataTable.AsEnumerable()
    .GroupBy(r => new {col1 = r["col1"], col2 = r["col2"]});

修改 根据评论进行了翻译:

DataTable dataTable = new DataTable();
dataTable.Columns.Add("col1"); 
dataTable.Columns.Add("col2"); 
dataTable.Columns.Add("val");
dataTable.Rows.Add("a", "b", 0);
dataTable.Rows.Add("a", "b", 2);
dataTable.Rows.Add("a", "c", 3);

Console.WriteLine(dataTable.AsEnumerable()
    .GroupBy(r => new { col1 = r["col1"], col2 = r["col2"] }).Count()); //2

答案 1 :(得分:0)

不幸的是,我对LINQ知之甚少,无法确定这是否是一个可行的解决方案。我选择在数据库级别执行我的数据透视逻辑。我会睁大眼睛。