2013-06-01 100 views
3

我有一个长集List<long> myIds。我正在使用ID填充集合。但是,我在要删除的集合中找到一些重复项。删除集合中的重复值

我试过在收集上使用distinct()但没有效果。重新排序和应用distinct()再次也没有帮助。

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

我尝试这样做:

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

您是否尝试过'mydIds = mydIds.OrderBy(x => x).Distinct()。ToList()'? – Liel

+0

你有更完整的代码示例吗?我没有问题通过LINQ的'Distinct'调用从集合中删除重复的'long'值;不需要'OrderBy'。 –

+2

你需要重视与列表不同的结果 – Steve

回答

7

您需要重新分配列表中再次因为LINQ不到位更改列表:

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

我想我已经试过了。让我再尝试一次。 – codingjoe

+0

啊,我觉得很愚蠢。我实际上已经使用myIds.Distict()。ToList(); 我有一个错误的集合变量我的断点。 :/ – codingjoe

1

你不reassing含混的结果到列表对象

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)); 
3

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

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

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