J'ai une situation où j'ai une liste d'ID tels que {1,2,3,4}. Je dois passer dans une méthode une autre liste d'identifiants et si la liste contient les mêmes nombres, renvoyer vrai, sinon si l'une ou l'autre liste n'est pas identique (sans tenir compte de l'ordre), je dois retourner false. Ainsi, un appel à la méthode avec {1,2,3,4,5} doit renvoyer false alors qu'un appel avec {2,4,1,3} renvoie true. Cela semble assez simple mais je n'arrive pas à comprendre comment le faire.comment créer cette requête linq
Répondre
Si vous êtes assuré de ne pas avoir des éléments répétitifs dans idList
, vous pouvez utiliser les éléments suivants:
if (idList.Count == otherIDList.Count &&
idList.Intersect(otherIDList).Count() == idList.Count)
{
// Contain same things.
}
else
{
// Do not contain same things.
}
Le premier chèque est de vous assurer qu'ils sont de la même taille. C'est un moyen vraiment bon marché de voir si les listes ont même une chance d'être identiques, comme avec les chaînes. Aussi, sans cela, l'instruction retournera vrai si otherIDList
est un surensemble de idList
.
Si vous ne pouvez pas garantir l'unicité de la collection, je pense que vous devrez coder quelque chose vous-même.
La voie est plus simple sans doute ceci:
var idSet = new HashSet<int>(idList1);
if (idSet.SetEquals(idList2))
{
...
}
Selon les commentaires, ce ne tiendra compte {1, 1, 1, 1, 1} égale à {1} - en d'autres termes, il le traite comme un ensemble au lieu d'une collection non ordonnée de valeurs éventuellement dupliquées.
Un rappel que LINQ n'est pas une solution miracle pour travailler avec des collections. –
J'ajouterais une mise en garde que cela ne fonctionnera pas si la liste a des éléments répétitifs. Il est indiqué que ce sont des pièces d'identité dans la question, et pourraient donc supposer qu'ils ne se répètent pas. Mais ce n'est pas déclaré explicitement. – jdmichal
@jdmichal: Vrai. Je mettrai à jour pour le mentionner. –
- 1. Comment optimiser cette requête linq?
- 2. Comment rendre cette requête LINQ plus propre?
- 3. Comment écrire cette requête linq dynamique?
- 4. Comment utiliser LINQ dans cette requête?
- 5. Comment écrire cette requête dans LINQ?
- 6. Comment puis-je créer cette requête compliquée?
- 7. Comment créer cette requête XML SOAP?
- 8. PHP - comment créer cette requête XML SOAP?
- 9. Comment écrire cette requête linq pour éviter trop de requêtes?
- 10. Comment rendre cette requête LINQ to XML plus élégante?
- 11. Comment améliorer cette requête LINQ pour la recherche
- 12. Comment écrire cette requête SQL moyenne dans LINQ
- 13. Comment modifier cette requête en linq en sql?
- 14. Comment obtenir la somme dans cette requête Linq?
- 15. Comment convertir cette requête XPath en LINQ en XML?
- 16. Comment puis-je nettoyer cette requête LINQ (SelectMany)?
- 17. Comment interroger cette requête complexe dans T-SQL/Linq?
- 18. Comment pourrais-je faire cette requête - LINQ to SQL?
- 19. Comment utiliser cette requête T-SQL dans LINQ/Entity Framework?
- 20. Comment représenter cette requête SQL dans LINQ à des entités?
- 21. Comment coder cette requête SQL dans Linq-To-SQL?
- 22. Comment écrivez-vous cette requête?
- 23. Comment créer une condition unique pour cette requête SQL?
- 24. Comment faire cette requête?
- 25. Comment accélérer cette requête?
- 26. Comment optimiser cette requête?
- 27. comment cette requête syndicale
- 28. comment optimiser cette requête?
- 29. Comment faire cette requête
- 30. Comment faire cette requête?
Merci. Je pensais à la méthode de l'intersection, mais je ne me souvenais pas de ce qu'on l'appelait. Merci encore! –