C# 如何按枚举c列表进行分组

C# 如何按枚举c列表进行分组,c#,list,C#,List,我有一个自定义对象列表,我想用自定义对象中的枚举对该对象进行分组 我怎么能在c中做到这一点 我想通过枚举来创建现有列表的新列表,这意味着每个列表都有一个不同的枚举 public struct xyz { public int ID; public string Name; public ClassType Type; } 我想创建一个新列表,其中有不同的枚举您可以尝试使用Linq的gr

我有一个自定义对象列表,我想用自定义对象中的枚举对该对象进行分组

我怎么能在c中做到这一点

我想通过枚举来创建现有列表的新列表,这意味着每个列表都有一个不同的枚举

   public struct xyz
        {
            public int ID;
            public string Name;
            public ClassType Type;
        }

我想创建一个新列表,其中有不同的枚举

您可以尝试使用Linq的groupBy方法。我将发布一些代码来帮助您理解

class Program
    {
        static void Main(string[] args)
        {
            var obj1 = new MyClass(MyEnum.One);
            var obj2 = new MyClass(MyEnum.Two);
            var obj3 = new MyClass(MyEnum.One);
            var obj4 = new MyClass(MyEnum.Two);

            var lst = new List<MyClass>() {obj1,obj2,obj3,obj4};
            var studentQuery2 =
                from obj in lst
                group obj by obj.enumr8 into g
                    select new { g.Key, g };

        foreach (var obj in groupedLists)
        {
            Console.WriteLine(obj.Key);
        }
        Console.ReadKey();    


        }
    }


    class MyClass
    {
        public MyEnum enumr8;

        public MyClass(MyEnum enumr8_Val)
        {
            this.enumr8 = enumr8_Val;  
        }
    }

    enum MyEnum
    { 
        One=1,
        Two
    }

示例代码在您的帖子的早期版本中,不知道为什么要删除它,无论如何-您可以在自定义类型列表中使用GroupBy:

enum CustEnum
{
    A=1,
    B,
    C
}

class CustomType
{
    public CustEnum xyz { get; set; }
}


...

List<CustomType> customTypes = ...    
var groupedList = customTypes.GroupBy(x => x.xyz).Select(g => g.ToList()).ToList();

你是在问一般情况下如何分组吗?因为枚举没有什么特别的。在你的新样本代码中没有枚举。我想创建一个新的列表,列出具有不同枚举的人是什么意思?我会停止分组,而不是将他们放入匿名对象中。您返回的分组就是所需的全部。