使用Linq合并基于属性的类

时间:2014-04-26 17:07:22

标签: c# linq

我有ListPerson类对象。

List Persons = new List();

class Person
{
    public int CatId{ get; set; }
    public int SubcatId{ get; set; }
}

现在Person类的实例可能具有相同的 CatId SubcatId 。但是对于两个类同时使每个实例都是独特的,它们并不相同。例如:

Person1: {CatId = 1, SubcatId = 1}
Person2: {CatId = 1, SubcatId = 2}
Person3: {CatId = 2, SubcatId = 1}
Person4: {CatId = 2, SubcatId = 2}

现在我有另一个类MergedPerson合并Person个具有相同 CatId

的类
class MergedPerson
{
    public int CatId{ get; set; }
}

如何使用MergedPerson创建MergedPersons个对象列表:列出Linq

MergedPerson1: {CatId = 1}
MergedPerson2: {CatId = 2}

1 个答案:

答案 0 :(得分:1)

使用GroupBy

var MergedPersons = Persons
                   .GroupBy(x => x.CatId)
                   .Select(x => new MergedPerson { CatId = x.Key })
                   .ToList();

如果您想根据多个媒体资源对人员进行分组,可以使用Composite Key

var MergedPersons = Persons
                   .GroupBy(x => new { x.CatId, x.SubcatId })
                   .Select(x => new MergedPerson { CatId = x.Key.CatId })
                   .ToList();