Linq Distinct() is not working
distinct()不工作。它显示所有重复值。我找了个解决办法,但还是弄糊涂了。我试过这个:
1 2
| var categories = db.Orders.OrderBy(c => c.Item1).ToList().Distinct();
var categories = db.Orders.Distinct().OrderBy(c => c.Item1).ToList(); |
有没有一种简单快捷的方法来完成这项工作?
- 型那么,我想你们的订单是不同的。你确定他们没有吗?
- 型应该努力使条目与众不同。你有没有具体的例子?
- 型检查msdn.microsoft.com/en-us/library/vstudio/…
- 型tolist().distinct()的类型使tolist()成为多余的。如果您想要一个列表,请在以下位置切换:distinct().tolist()。
- 型@Dennis_e不是真的,一个可能在数据库中进行比较,另一个可能在C_中进行比较。
- 型@Mikehowe我认为这是Linq to SQL?它实际上并没有在任何地方陈述,只是推断出来的。
- 型stackoverflow.com/questions/489258/…
- 型@弗拉德,这很可能是行动部门需要的,很难说。你的回答本可以更清楚,但很抱歉被人删除了。
- 型ORDERS只是一个包含诸如home、home、car、car等条目的SQL Server表。我使用的是实体框架。这只是一个练习项目。
- 型@罗林,我很确定使用Groupby足以解决他的问题。但是编程大师不会允许它作为一个有效的答案,就这样吧。本年度全部
- 型我使用了GroupBy并让它工作(参见更新的答案)。
- 型@vland是使用"morelinq"distinctby的有效答案吗?我应该把我的问题作为答案吗?真不敢相信Linq一定要把简单的、独特的、如此复杂的。
- 型@MikehoweDistinct并不复杂。它做的正是它应该做的,而且工作得很完美。你只是不想得到不同的项目,尽管你的问题没有讨论这个。实际上,您希望使用该项的单个属性作为其标识来获取不同的项。这是一个完全不同的问题。这就是为什么你不应该在你的问题中说,"它不起作用",而应该解释,具体地说,发生了什么,你想发生什么。如果你这样做了,答案将是微不足道的。
- 型如果是一张桌子,你没有主键吗?
- 型我想我不明白Linq Distinct的作用。我觉得这就像普通的SQL不同。
- 型它类似于常规的sql distinct。db.Orders.Distinct()与SELECT DISTINCT * FROM orders相同
用GroupBy代替Distinct。
- 我也遇到了类似的问题,他要求快速而不复杂的解决方案。groupby"some value"是一种快速且易于实现的方法。一个新的比较器不是那么"容易"
- @事实上,低投票率的GroupBy(...).Select(g => g.First())可能会起作用…(顺便说一句:这不是答案,只能是评论)
- 是的,会有效果的,但是如果你愿意请继续投反对票
- @弗拉德,因为某种原因,我直到现在才看到你回答。至少可以说,我现在很困惑。我应该删除这个问题吗?
- @米奇欠你告诉我。如果此答案有帮助,请标记为正确。否则忽略它
- @Vland也许你可以在你的答案中添加一些信息?展示如何准确地使用它,或者什么对将来的读者有帮助?