0
我需要一個C#方法,它可以對源表中包含複合鍵的DataTable/IDataReader對象進行透視。帶複合鍵字段的DataTable數據透視表方法
我想使用這個:http://weblogs.sqlteam.com/jeffs/articles/5091.aspx 但是它只適用於單個鍵列。
沒有SQL。它必須是C#。
我需要一個C#方法,它可以對源表中包含複合鍵的DataTable/IDataReader對象進行透視。帶複合鍵字段的DataTable數據透視表方法
我想使用這個:http://weblogs.sqlteam.com/jeffs/articles/5091.aspx 但是它只適用於單個鍵列。
沒有SQL。它必須是C#。
不幸的是我不夠了解LINQ,以確定這是否是一個可行的解決方案。我選擇在數據庫級別上執行我的樞紐邏輯。我會保持睜大眼睛。
你可以使用LINQ:
myDataTable.AsEnumerable()
.GroupBy(r => new {col1 = r["col1"], col2 = r["col2"]});
編輯 根據註釋Vertified:
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
我不太瞭解LINQ。當我嘗試這個代碼時,我仍然得到相同數量的行。一個pivoted版本會使結果集非規範化並返回一個小得多的結果集。 – 2010-07-29 18:31:04
@ subt13:我剛剛嘗試過,它確實返回的行較少,您可以發佈您使用的代碼嗎? – 2010-07-29 19:57:29
你說得對,我的結果集中有一個額外的列導致了問題。但是,我需要一個完整的方法,而不僅僅是一個將轉換表的片段。我計劃在數據綁定情況下使用結果表。 – 2010-07-29 21:07:04