C#,将List <class>拆分为List <list <class>&gt; (组)

时间:2017-04-26 19:03:01

标签: c# linq

我有课程列表以及如何拆分,分组?

class CLA 
{
    string GroupName;
    double Class;
    double Value;
}

...

public List<List<CLA>> Dividr (List<CLA> a)
{
    List<List<CLA> Clist = new List<List<CLA>>();
    Clist.Addrange(...) //Here 
    returnn Clist;
} 

至于划分,它将被它的属性GroupName,Class分割。

示例,如果元素具有相同的GroupName和类,则它将是一个列表&lt;&gt;。

1 个答案:

答案 0 :(得分:2)

只需使用GroupBy即可。然后,正如您想要一个内部列表而不是IEnumerable每个组使用ToList()

List<CLA> data = new List<CLA>();
var result = data.GroupBy(item => new { item.GroupName, item.Class })
                    .Select(group => group.ToList()).ToList();

除非出于特定原因,否则请考虑返回IEnumerable<IEnumerable<CLA>> - 如果不需要,则羞于已经执行查询:

var result = data.GroupBy(item => new { item.GroupName, item.Class })
                    .Select(group => group);