2011-06-11 67 views
-4

我有一個自定義對象的列表,我想用它們在自定義對象中的枚舉來分組對象。我怎麼可以通過枚舉c#列表

我如何在C#中做到這一點

我想通過自己的枚舉現有列表的新列表意味着每個列表有差異枚舉

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

我想打誰擁有一個新的列表一個不同的枚舉

+2

呃......什麼枚舉? – 2011-06-11 05:58:19

+0

你問一般如何組合?因爲枚舉沒有什麼特別的。 – Gabe 2011-06-11 05:58:24

+0

新示例代碼中沒有枚舉 – BrokenGlass 2011-06-11 06:04:00

回答

5

示例代碼在那裏在您的文章的早期版本,不知道爲什麼你拿出來,反正 - 您可以在自定義的列表中使用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(); 
0

你可以嘗試使用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 
    } 
+1

我會停止分組,而不是將它們扔到匿名對象中。你得到的分組是你需要的。 – 2011-06-11 06:38:12