我有一个对象列表,这些对象被其中一个属性“ID”唯一地键入或标识。我需要对不同ID的所有对象进行分组,这些对象的其余属性都是相同的。
示例:Obj具有属性“ID”,“E1”,“E2”,“E3”。请注意,这些都是Obj的所有属性。
我知道所有的Obj's ID都不同,但是如果不同的Obj的E1,E2和E3相同,我想分组。所以我会有一系列具有相同E1,E2,E3但不同ID的Obj。
在C#中处理这个问题的最简单方法是什么?任何想法?
答案 0 :(得分:9)
嗯,像这样的东西适用于LINQ:
var groups = collections.GroupBy(x => new { x.E1, x.E2, x.E3 });
这将为您提供一系列可以迭代的分组。例如:
var groups = collections.GroupBy(x => new { x.E1, x.E2, x.E3 });
foreach (var group in groups)
{
Console.WriteLine("Key: {0}", group.Key);
foreach (var item in group)
{
Console.WriteLine(" ID: {0}", item.ID);
}
}
答案 1 :(得分:0)
在对象之间实现公共属性/方法的接口。使用接口类型进行交互。
答案 2 :(得分:0)
Linq听起来不错。
public class YourClass
{
public string ID { get; set; }
public string E1 { get; set; }
public string E2 { get; set; }
public string E3 { get; set; }
}
public static YourClass[] GetClassArray(IEnumerable<YourClass> objects)
{
return objects.OrderBy<YourClass, string>(c => c.E1)
.ThenBy<YourClass, string>(c => c.E2)
.ThenBy<YourClass, string>(c => c.E3)
.ThenBy<YourClass, string>(c => c.ID)
.ToArray<YourClass>();
}