如何在c#中对数据表中的数据进行分组

时间:2010-08-05 06:13:23

标签: c#

我有这样的数据表(我从excel表中获取数据)。 我正在将Excel工作表转换为数据表。现在我需要格式化数据。 这就是我的数据表的样子。

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

任何想法如何做到这一点? 任何帮助将不胜感激

谢谢。

2 个答案:

答案 0 :(得分:1)

为什么不将linq与“group by”子句一起使用?

例如,请参阅以下链接中的示例3:

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

答案 1 :(得分:0)

我们在数组中使用了主要名称。

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

然后获取源数据表并根据潜在客户名称对其进行过滤并添加到新的DataTable:

    #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  
通过这种方式,我解决了这个问题。