2017-03-14 106 views
0

我有一個名爲ID列一個非常大的數據表,日期splite數據表到列表 有12000條記錄it.so記錄樣品中:如何使用C#.NET

1001,02/06/2016 12:21:20monday 
1002,01/06/2016 12:21:20monday 
1001,03/06/2016 12:21:20monday 
1004,03/06/2016 12:21:20monday 
1005,04/06/2016 12:21:20monday 
1001,01/06/2016 12:21:20monday 
1004,02/06/2016 12:21:20monday 
1006,06/06/2016 12:21:20monday 
1005,05/06/2016 12:21:20monday 
1002,07/06/2016 12:21:20monday 
1003,08/06/2016 12:21:20monday 
1001,02/06/2016 12:21:20monday 
1004,01/06/2016 12:21:20monday 
1005,04/06/2016 12:21:20monday 
1002,03/06/2016 12:21:20monday 
1003,02/06/2016 12:21:20monday 
1006,06/06/2016 12:21:20monday 
1004,02/06/2016 12:21:20monday 
1005,02/06/2016 12:21:20monday 
1002,02/06/2016 12:21:20monday 

所以我想使下面結構

List<KeyValuePair<string, string[]>> dicc = new List<KeyValuePair<string, string[]>>(); 

第一項的列表包含ID日提交的第二項是字符串數組,它包含日期域象下面

1001 
    02/06/2016 12:21:20monday 
    01/06/2016 12:21:20monday 
    03/06/2016 12:21:20monday 
    03/06/2016 12:21:20monday 
    04/06/2016 12:21:20monday 
    01/06/2016 12:21:20monday 
1002 
    02/06/2016 12:21:20monday 
    06/06/2016 12:21:20monday 
    05/06/2016 12:21:20monday 
    07/06/2016 12:21:20monday 
    08/06/2016 12:21:20monday 
1003 
    02/06/2016 12:21:20monday 
    01/06/2016 12:21:20monday 
    04/06/2016 12:21:20monday 
    03/06/2016 12:21:20monday 
    02/06/2016 12:21:20monday 

所以,我怎麼能做到這一點。請幫我

回答

1

您可以使用LINQ查詢來選擇的KeyValuePairsDataTable

List<KeyValuePair<string, string[]>> dicc = dataTable.AsEnumerable() 
    .Select(Row => Row["ID"]).Distinct() 
    .Select(Id => new KeyValuePair<string, string[]>(
     Id.ToString(), 
     dataTable.AsEnumerable() 
      .Where(Row => Row["ID"].ToString() == Id.ToString()) 
      //.OrderBy(Row => Row["Date"]) 
      .Select(Row => Row["Date"].ToString()) 
      .ToArray())) 
    .ToList(); 

運行與查詢DataTable

DataTable dataTable = new DataTable(); 
dataTable.Columns.Add(new DataColumn("ID")); 
dataTable.Columns.Add(new DataColumn("Date")); 
dataTable.Rows.Add(1, "Date1"); 
dataTable.Rows.Add(1, "Date2"); 
dataTable.Rows.Add(1, "Date3"); 
dataTable.Rows.Add(2, "Date4"); 
dataTable.Rows.Add(2, "Date5"); 

返回列表

  1. 鍵: 「1」 值: 「日期1」, 「日期2」, 「DATE3」
  2. 鍵: 「2」 值: 「Date4」, 「Date5」
+0

親愛Fruchtzwerg 我想要像exmple列表我怎麼能做到這一點 – amin

+0

我已經更新了查詢 - 現在應該做你所需要的 - 看看:-) – Fruchtzwerg

+0

親愛Fruchtzwerg我檢查你的代碼,但有string []數組中沒有項目。請告訴我爲什麼? – amin