用Lambda或者Linq语法对结果进行Group by并输出

List<SP_CategoryMaping> lst_Attrib = new List<SP_CategoryMaping>();
        DataTable dt_Attrib = new DataTable();
        lst_Attrib = CategoryMapingBLL.GetModelList(9999, 1, "SP_CategoryID=" + dl_selectCategory.SelectedValue + "", out count);
        if (lst_Attrib.Count == 0)
        {
            Response.Write("此类别中尚未添加属性选项。");
            return;
        }
        //Linq形式
        //var MainAttribList = from a in lst_Attrib
        //                     group a by a.SP_MapAttribID into l
        //                     select new { 
        //                         l.First().SP_MapAttribID
        //                     };
        //Lambda形式
        var MainAttribList = lst_Attrib.GroupBy(x => x.SP_MapAttribID).Select(a => new { a.First().SP_MapAttribID });

        foreach (var m in MainAttribList)
        {
            Response.Write(m.SP_MapAttribID + "<br />");
        }

原结果:

SP_MapAttribID	SP_SubAttribID	SP_CategoryID
CO1001001	C0200003	CO300001501001
CO1001001	C0200002	CO300001501001
CO1001001	C0200001	CO300001501001
CO0901001	C0300002	CO300001501001
CO0901001	C0300001	CO300001501001
CO0801001	C0400003	CO300001501001
CO0801001	C0400002	CO300001501001
CO0801001	C0400001	CO300001501001
CO0701001	C0500001	CO300001501001
CO0601001	C0600001	CO300001501001
CO0501001	C0700001	CO300001501001
CO0401001	C0800002	CO300001501001
CO0401001	C0800001	CO300001501001
CO0301001	C0900001	CO300001501001
CO0201001	C1000001	CO300001501001
CO0101001	C0100005	CO300001501001
CO0101001	C0100004	CO300001501001
CO0101001	C0100003	CO300001501001
CO0101001	C0100002	CO300001501001
CO0101001	C0100001	CO300001501001

输出结果:

CO1001001 CO0901001 CO0801001 CO0701001 CO0601001 CO0501001 CO0401001 CO0301001 CO0201001 CO0101001

 
经验分享 程序员 微信小程序 职场和发展