将元素从一个列表分类到另一个分类

本文关键字:分类 列表 一个 另一个 元素 | 更新日期: 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排序的枚举集合。