2010-08-05 60 views
0

我有這樣的數據表(我從Excel工作表中獲取數據)。 我將Excel錶轉換爲數據表。現在我需要格式化數據。 這就是我的數據表的樣子。如何將數據分組在c#中的數據表#

Lead EMPnames 
vinay kumar 
vinay manju.u 
vinay kiran 
anitha manju.k 
anitha rahul 
sandeep arjun 
sandeep manu 
rohit  sandeep 
rohit  vinay 
rohit  anitha 

現在我需要格式化數據表是這樣的:

Lead  EMPnames 
vinay kumar 
     manju.u 
     kiran 
sandeep arjun 
     manu 
anitha manju.k 
     rahul 
rohit sandeep 
     vinay 
     anitha 

任何想法,如何做到這一點? 任何幫助,將不勝感激

謝謝。

+0

你是什麼意思與格式?格式化到屏幕? – Carra 2010-08-05 07:29:18

回答

0

我們已經在數組中領先名稱。通過這種方式,我解決了這個問題

#region Grouping by Teamlead 
    DataTable dtGroup = new DataTable(); 
    dtGroup = dtResult.Clone(); 
    foreach (DataColumn dc in dtResult.Columns) 
    { 
     dc.DataType = typeof(string); 
    } 
    dtGroup.AcceptChanges(); 

    foreach (string s in srLead) 
    { 
     string name = s; 
     DataTable dtsource = new DataTable(); 
     dtsource = TeamLeadFilter(dtResult, name); 
     CombineDatatable(ref dtGroup, dtsource); 
     dtGroup.AcceptChanges(); 
    } 
    #endregion 

    #region TeamLeadFilter 
    public DataTable TeamLeadFilter(DataTable dtResult, string str) 
    { 
     DataView dvData = new DataView(dtResult); 
     dvData.RowFilter = "TeamLead ='" + str + "'"; 
     return dvData.ToTable(); 
    } 
    #endregion 

    #region CombineDatatable 
    public DataTable CombineDatatable(ref DataTable destini, DataTable source) 
    { 
     foreach (DataRow dr in source.Rows) 
     { 
      destini.ImportRow(dr); 
     } 
     return destini; 
    } 
    #endregion 

string[] srLead = { "vinay", "sandeep", "anitha", "rohit" }; 

然後取源數據表和篩選它基於領先的名字,並添加到一個新的DataTable。

1

爲什麼不使用linq和「group by」子句?

例如,請參見下面的鏈接示例3:

http://msdn.microsoft.com/en-us/vcsharp/aa336754.aspx#simple1

+0

爲了保持最新,上面的鏈接現在重定向到一般的101 LINQ。這就是爲什麼在答案中顯示代碼示例而不是發佈鏈接總是更好的原因。要查找舊鏈接指出的代碼,請轉到分組部分,然後單擊其中列出的任何樣本。 – Nope 2012-01-31 14:38:01

相關問題