我有一个自定义对象列表,我想用自定义对象中的枚举对象进行分组。
我怎样才能在c#
中做到这一点我希望按照枚举的方式列出现有列表的新列表,这意味着每个列表都有差异枚举
public struct xyz
{
public int ID;
public string Name;
public ClassType Type;
}
我想创建一个具有不同枚举的新列表
答案 0 :(得分:6)
示例代码出现在您帖子的早期版本中,不知道为什么要将其删除,无论如何 - 您可以在自定义类型的列表中使用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();
答案 1 :(得分: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
}