Distinct()保留始终采用列表中的第一个元素

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

总是按顺序返回2,3,4,1,6,7,10?

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

但是,Linq对象中Distinct的当前实现将保留顺序。 但是,对于其他LINQ提供程序并不能保证这一点,并且不应依赖该行为。

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

一般来说: ,但在你的情况下(使用int数组):可能是的。 我打赌他们只是枚举collections品而忽视他们已经遇到过的物品。 但是,不要指望跨不同版本的.NET或不同类型的集合的这种行为。

正如JaredPar在他的回答中指出的那样,结果被指定为无序的 。 如果你想要一些特定的排序,你需要使用在你的情况下有意义的任何算法对它们进行排序。