代码之家  ›  专栏  ›  技术社区  ›  Cornelius

Distinct()preserve是否总是取列表中的第一个元素

  •  13
  • Cornelius  · 技术社区  · 15 年前

    int[] nums = { 2, 3, 3, 4, 2, 1, 6, 7, 10 };
    var distinct = nums.Distinct();
    

    2, 3, 4, 1, 6, 7, 10 按那个顺序?

    3 回复  |  直到 15 年前
        1
  •  16
  •   Michael Freidgeim    8 年前

    Enumerable.Distinct的定义行为是它将返回无序集合( Documentation ).

        2
  •  2
  •   shahkalpesh    15 年前

    我认为“无序”一词的意思是与原来的顺序相同。
    因此,调用者应该决定是否对结果进行排序。

        3
  •  0
  •   Isak Savo    15 年前

    一般来说: 号码 ,但在您的情况下(使用int数组):可能是的。我敢打赌,他们只是在列举收藏品,而忽略了他们已经遇到的物品。但不要指望在不同版本的.NET或不同类型的集合中出现这种行为。

    正如JaredPar在他的回答中指出的,结果被指定为 无序 . 如果您想要一些特定的排序,那么您需要在之后使用在您的案例中有意义的任何算法对它们进行排序。