合并两个通用列表

时间:2014-01-07 17:36:28

标签: c# linq list generics

创建了一个类

 public class DBClass: IDisposable
    {
        public string Name { get; set; }
        public int Score { get; set; }
    }

使用此类创建类的列表。

        List<DBClass> dbc1 = new List<DBClass>();
        List<DBClass> dbc2 = new List<DBClass>();

我在列表中添加了两组不同的数据。 注意:这只是一个例子

        dbc1.Add(SetDBClass("A", 100));
        dbc1.Add(SetDBClass("B", 100));
        dbc1.Add(SetDBClass("C", 100));

        dbc2.Add(SetDBClass("B", 200));
        dbc2.Add(SetDBClass("C", 200));
        dbc2.Add(SetDBClass("D", 200));

我需要一个List<DBClass>对象,上面两个对象合并但是以下面的方式。

A - 100 B - 300 C - 300 D - 200

如何通过LINQ或其他任何方式实现上述目标?

如果要从两个列表中排除相同的数据,请按以下步骤操作:

ParentDB.Where(b => !((from x in mainDataSource select x.Name).Contains(b.Name))).ToList();

1 个答案:

答案 0 :(得分:11)

from x in dbc1.Concat(dbc2)
group x by x.Name into g
select new DBClass(g.Key, g.Sum(x => x.Score))