将元素从一个列表分类到另一个分类
本文关键字:分类 列表 一个 另一个 元素 | 更新日期: 2023-09-27 18:04:57
我有一个List<Foo>
。Foo类包含一个Type属性。Type属性为enum。
public enum Type
{
Arithmetic, Fraction, ...
}
public class Foo
{
public Type ProblemType
{
get; set;
}
}
我想生成另一个列表,它是由ProblemType排序的,每个包含属于同一类型的Foo类。我可以想象我应该使用Enumerable,但我不知道如何使用它们。
Thanks in advance
您可以使用GroupBy()来做到这一点:
List<List<Foo>> groupedLists
= yourList.GroupBy(foo => foo.ProblemType)
.OrderBy(group => group.Key)
.Select(group => group.ToList())
.ToList();
在传递中,我建议不要使用Type
作为枚举的名称,因为会与System发生名称冲突。类型通常不是一个好主意。您甚至可以将其命名为ProblemType
,因为写public ProblemType ProblemType { get; set; }
是明确的。
按ProblemType
排序,您可以尝试以下操作
var sortedFooList = fooList.OrderBy(f => f.ProblemType);
sortedFooList
将是IOrderedEnumerable<Foo>
。如果您想要List<Foo>
,只需在调用OrderBy()
后添加.ToList()
。
假设您已经有一个List<Foo>
,您可以查询该列表,通过ProblemType:
List<Foo> myFoos = GetFooList();
var sortedFoos = myFoos.OrderBy(f => f.ProblemType);
sortedFoos
是一个按Foo.ProblemType排序的枚举集合。