删除集合中的重复值

时间:2013-06-01 14:52:18

标签: c# collections lambda

我有一长串List<long> myIds。我正在使用id填充集合。但是,我想要删除的集合中有一些重复。

我尝试在集合上使用distinct()但没有效果。重新排序并再次应用distinct()也无济于事。

在不编写自定义逻辑的情况下删除这些重复项的最佳方法是什么?

我试过了:

mydIds.OrderBy(x => x).Distinct().ToList();

3 个答案:

答案 0 :(得分:7)

您需要重新分配列表,因为LINQ不会更改列表:

 mydIds = mydIds.Distinct().ToList();

答案 1 :(得分:3)

或者,如果您使用的是3.5及以上:

var hs = new HashSet<int>(myIds);

列表将填充哈希集。如果列表包含重复条目,则将忽略它们。不会抛出异常。

答案 2 :(得分:1)

您没有将Distinct的结果重新导入List对象

List<long> id = new List<long>() {20,50,34, 20, 21, 45, 50, 900, 34, 20};
id = id.Distinct().ToList();
id.ForEach(x => Console.WriteLine(x));