如何c#List<>按参数排序和分组?

时间:2013-12-03 15:40:43

标签: c# asp.net linq list

我有一个班级及其名单

 abc cs = new abc();
 List<abc> Lst_CS = new List<abc>();

我在foreach循环

中通过HidenField设置了一些值
 foreach (blah blah)
        {
 cs = new abc{
                    No = VKNT,
                    GuidID=hdnGuidID.Value.ToString(),
                    RecID=hdnRecID.Value.ToString(),
                    Date=HdnDate.Value.ToString()                    
                    };
                    Lst_CS.Add(cs);
}

最后我得到了一个List_CS,我按照Date的顺序由Lst_CS订购;

 IEnumerable<abc> query = Lst_CS.OrderBy(l => l.Date).ToList(); 

但另外,我希望根据No进行分组。

简单地说,我想按Date订购,然后No Lst_CS分组,我该怎么办? 谢谢你的回答

1 个答案:

答案 0 :(得分:1)

嗯,你只需按顺序进行排序,然后进行分组:

Lst_CS.OrderBy(l => l.Date)
      .GroupBy(l => l.No)
      .ToList(); 

每个组中的每个项目列表将按日期排序。 分组将按照按日期排序整个列表时的顺序排列。

您的ForEach也可以在一个Linq语句中完成,然后与排序和分组相结合:

var query = blah.Select(b => new abc{
                        No = VKNT,
                        GuidID=hdnGuidID.Value.ToString(),
                        RecID=hdnRecID.Value.ToString(),
                        Date=HdnDate.Value.ToString()                    
                        })
                 .OrderBy(l => l.Date)
                 .GroupBy(l => l.No)
                 .ToList();