特定类型的分组列表

时间:2015-09-09 08:12:02

标签: c# linq list

我的结构:

public struct MyStruct
{
    public int MyStructId;
    public decimal Properties1;
    public string Properties2;
    ...
}

var myList = new List<MyStruct>();

我的数据内部例如:

MyStructId   Properties1  Properties2
==========   ===========  ===========
1            2.5m         test 
1            1.0m         test2
2            2.2m         test3
1            1.8m         test4
2            2.9m         test5

我的目标是浏览我的特定类型的分组列表。这样的事情:

foreach (List<MyStruct> myStruct in myList.GroupBy(m => m.MyStructId))

foreach (List<MyStruct> myStruct in myList.GroupBy(m => m.MyStructId).Select(g => new { myStruct = g.ToList()}).ToList()))

Linq表达式应返回<List<List<MyStruct>>。 最好的方法是什么? 谢谢你的帮助。

1 个答案:

答案 0 :(得分:2)

这应该会给你预期的结果: -

List<List<MyStruct>> myStruct = myList.GroupBy(m => m.MyStructId)
                                      .Select(g => g.ToList()).ToList();

如果您想在foreach循环中直接使用此功能,则可以忽略上一个ToList: -

foreach (List<MyStruct> myStruct in myList.GroupBy(m => m.MyStructId)
                                          .Select(g => g.ToList()))
{

}