C# 将列表中的元素分类为其他分类
我有一个C# 将列表中的元素分类为其他分类,c#,oop,C#,Oop,我有一个列表。Foo类包含一个类型属性。类型属性是枚举 public enum Type { Arithmetic, Fraction, ... } public class Foo { public Type ProblemType { get; set; } } 我想生成另一个列表,其中它按ProblemType排序,每个列表都包含属于同一类型的Foo类。我可以想象我应该使用Enumerabl
列表
。Foo类包含一个类型属性。类型属性是枚举
public enum Type
{
Arithmetic, Fraction, ...
}
public class Foo
{
public Type ProblemType
{
get; set;
}
}
我想生成另一个列表,其中它按ProblemType排序,每个列表都包含属于同一类型的Foo类。我可以想象我应该使用Enumerable,但我不知道如何使用它们
提前感谢您按
问题类型排序
,您可以试试这个
var sortedFooList = fooList.OrderBy(f => f.ProblemType);
sortedTool列表
将是IOrderedEnumerable
。如果您想要列表
,只需在调用OrderBy()
后添加.ToList()
,假设您已经有一个列表
,您可以查询该列表以按问题类型提供有序集合:
List<Foo> myFoos = GetFooList();
var sortedFoos = myFoos.OrderBy(f => f.ProblemType);
List myFoos=get愚人();
var sortedFoos=myFoos.OrderBy(f=>f.ProblemType);
sortedFoos
是一个按Foo.ProblemType排序的枚举集合。您可以使用以下方法:
List<List<Foo>> groupedLists
= yourList.GroupBy(foo => foo.ProblemType)
.OrderBy(group => group.Key)
.Select(group => group.ToList())
.ToList();
列表分组列表
=yourList.GroupBy(foo=>foo.ProblemType)
.OrderBy(group=>group.Key)
.Select(group=>group.ToList())
.ToList();
顺便说一句,我建议不要使用
Type
作为枚举的名称,因为与名称冲突通常不是一个好主意。您甚至可以将其命名为ProblemType
,因为编写public ProblemType ProblemType{get;set;}
是明确无误的。因此您需要一个列表列表,其中每个内部列表包含具有相同ProblemType
的Foo
。如果您先排序,然后选择,您可以使用分组的键
属性。我认为这比使用First()
更清楚@svick,你完全正确。答案相应更新,谢谢:)谢谢弗里德里克。这就是我要找的