c# - 如何使用双键删除列表中的重复对象
问题描述
我有列表对象。但它有2个键的重复记录-和. 如何从列表中删除重复项?itemId
itemTypeId
我试过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();
实际结果 :
to1
和to3
解决方案
您可以使用以下语法对多个字段进行分组,分组将过滤掉重复的条目:
var testListNoDups = testList.GroupBy(x => new {x.itemId, x.itemTypeId})
.Select(x => x.First())
.ToList();