4

我有一个 longs List<long>myIds 的集合。我正在用 id 填充集合。但是,我在要删除的集合中得到了一些重复项。

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

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

我试过这个:

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

3 回答 3

7

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

 mydIds = mydIds.Distinct().ToList();
于 2013-06-01T14:55:46.613 回答
3

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

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

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

于 2013-06-01T15:00:09.910 回答
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));
于 2013-06-01T14:59:10.103 回答