我有一个情况,我有一个ID列表{1,2,3,4}。我需要传入一个方法的另一个ID列表,如果列表中有相同的数字,则返回true,否则如果两个列表不相同(不考虑排序),我需要返回false。因此,使用{1,2,3,4,5}的方法调用应该返回false,而使用{2,4,1,3}的调用返回true。这听起来很简单,但我无法弄清楚如何去做。如何创建这个linq查询
回答
如果你保证不会有重复的元素idList
,您可以使用以下命令:
if (idList.Count == otherIDList.Count &&
idList.Intersect(otherIDList).Count() == idList.Count)
{
// Contain same things.
}
else
{
// Do not contain same things.
}
第一次检查是确保它们是相同的尺寸。这是一个非常便宜的方法,可以查看这些列表是否有与字符串相同的机会。此外,没有它,如果otherIDList
是idList
的超集,则该语句将返回true。
如果你不能保证集合中的唯一性,我认为你将不得不自己编写代码。
最简单的方法可能是这样的:
var idSet = new HashSet<int>(idList1);
if (idSet.SetEquals(idList2))
{
...
}
按照意见,这会考虑{1,1,1,1,1}等于{1} - 换句话说,它将它视为一个集合,而不是无序的可能重复值集合。
提醒说,LINQ不是一个银色的子弹来处理集合。 – 2010-10-07 20:42:53
我想补充说明,如果列表中有重复元素,这将不起作用。据说他们是问题中的ID,所以可能会认为他们不会重复。但是没有明确说明。 – jdmichal 2010-10-07 20:48:23
@jdmichal:的确如此。将更新提到这一点。 – 2010-10-07 20:51:50
- 1. 如何基于这个SQL创建一个LINQ查询?
- 2. 如何查询这在LINQ
- 3. 如何优化这个linq查询?
- 4. 如何优化这个LINQ查询?
- 5. 如何编写这个linq查询?
- 6. 如何在LINQ中查询这个XML?
- 7. 如何编写这个LINQ/EF查询?
- 8. 如何写这个LINQ查询
- 9. LINQ to NHibernate,如何做这个查询
- 10. 如何优化这个linq查询?
- 11. 错误创建LINQ查询
- 12. 创建动态LINQ查询
- 13. 动态创建linq查询
- 14. 如何创建这样的查询?
- 15. 如何在T-SQL/Linq中查询这个复杂的查询?
- 16. 如何编写这个linq查询以避免查询太多?
- 17. 构建一个linq查询
- 18. 如何构建这个请求查询
- 19. 如何重建这个sql查询
- 20. 如何建立这个sql查询
- 21. 如何查看从LINQ to SQL查询创建的SQL?
- 22. 如何在MYSQL中创建这个查询?是什么加入?
- 23. 如何为这个简单案例创建枢轴查询?
- 24. 如何为这个标准创建mysql查询?
- 25. 如何创建这个复杂的查询?
- 26. 创建LINQ查询作为字符串
- 27. Linq查询 - 创建通用子集
- 28. LINQ查询中创建某种循环
- 29. 的LINQ to XML查询从XML创建
- 30. 创建可重用的LINQ查询
谢谢。我正在考虑相交方法,但我不记得它被称为什么。再次感谢! – 2010-10-08 12:23:00