1. 程式人生 > >用Lambda或者Linq語法對結果進行Group by並輸出

用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