c# - Distinct() 方法是否保持序列的原始顺序不变?

标签 c# list linq duplicates

我想从列表中删除重复项,而不更改列表中唯一元素的顺序。

Jon Skeet 和其他人建议使用以下内容:

list = list.Distinct().ToList();

引用:

是否保证唯一元素的顺序与之前相同?如果是,请提供证实这一点的引用,因为我在文档中找不到任何内容。

最佳答案

不能保证,但这是最明显的实现。如果不按顺序返回它们,将很难以流式方式实现(即它会尽快返回结果,尽可能少地读取)。

您可能想阅读我在 Edulinq implementation of Distinct() 上的博文.

请注意,即使这对于 LINQ to Objects 是有保证的(我个人认为应该是这样),这对其他 LINQ 提供程序(例如 LINQ to SQL)也没有任何意义。

IMO,LINQ to Objects 中提供的保证级别有时有点不一致。一些优化被记录在案,其他的则没有。哎呀,有些文档完全错误

关于c# - Distinct() 方法是否保持序列的原始顺序不变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4734852/

相关文章:

c# - 如何从谓词对象中删除重复项?

c# - C#DataTable Linq选择列等于“x”的不同值

c# - 无法在 Xamarin 表单的 Release模式下构建解决方案

c# - 使用 LINQ 进行查询,其中上下文与对象列表中的多个参数相匹配

list - python -- 将字符串转换为 python 列表

c# - `Aggregate`怎么写成 `from .. in ..`?

c# - 使用 Dapper 将两个数据库列映射到一种数据类型

c# - Xamarin PureSocketCluster 多个程序集

java - 尝试从文本文件中读取

c++ - 将 url 存储到文件中,以便可以快速访问它们