我有List<Foo>
。 Foo类包含Type属性。 Type属性是枚举。
public enum Type
{
Arithmetic, Fraction, ...
}
public class Foo
{
public Type ProblemType
{
get; set;
}
}
我想生成另一个列表,其中它按ProblemType排序,每个列表包含属于同一Type的Foo clases。我可以想象我应该使用Enumerable,但我不知道如何使用它们。
提前致谢
答案 0 :(得分:2)
您可以使用GroupBy()执行此操作:
List<List<Foo>> groupedLists
= yourList.GroupBy(foo => foo.ProblemType)
.OrderBy(group => group.Key)
.Select(group => group.ToList())
.ToList();
顺便说一句,我建议不要使用Type
作为枚举的名称,因为与System.Type发生名称冲突通常不是一个好主意。您甚至可以将其命名为ProblemType
,因为编写public ProblemType ProblemType { get; set; }
是明确的。
答案 1 :(得分:1)
要按ProblemType
排序,您可以试试这个
var sortedFooList = fooList.OrderBy(f => f.ProblemType);
sortedFooList
将为IOrderedEnumerable<Foo>
。如果您需要List<Foo>
,请在致电.ToList()
后添加OrderBy()
。
答案 2 :(得分:0)
假设您已经有List<Foo>
,您可以通过ProblemType查询该列表以提供有序集合:
List<Foo> myFoos = GetFooList();
var sortedFoos = myFoos.OrderBy(f => f.ProblemType);
sortedFoos
是一个按Foo.ProblemType排序的枚举集合。