首页 > 解决方案 > 如何使用双键删除列表中的重复对象

问题描述

我有列表对象。但它有2键的重复记录-和. 如何从列表中删除重复项itemIditemTypeId

我试过GroupBy- 但它一次只能使用一个键

public class TestObject
{
        public string Name;
        public int itemTypeId;
        public int itemId;
        public int id;
}

List <TestObject> testList = new List<TestObject>();

TestObject to1 = new TestObject();
TestObject to2 = new TestObject();
TestObject to3 = new TestObject():

to1.id = 1;
to1.itemId = 252;
to1.itemTypeId = 1;
to1.Name = "to1";

to2.id = 2;
to2.itemId = 252;
to2.itemTypeId = 1;
to2.Name = "to2";

to3.id = 3;
to3.itemId = 252;
to3.itemTypeId = 2;
to3.Name = "to3"

testList.Add(to1);
testList.Add(to2);
testList.Add(to3);

var result = testList.GroupBy(x=>x.itemId).Select(g => 
g.First()).ToList();

实际结果 :

to1to3

标签: c#

解决方案


您可以使用以下语法对多个字段进行分组,分组将过滤掉重复的条目:

var testListNoDups = testList.GroupBy(x => new {x.itemId, x.itemTypeId})
                                  .Select(x => x.First())
                                  .ToList();

推荐阅读