@Servy une des raisons d'utiliser OrderBy serait que ListaServizi n'a pas de méthode Sort car elle est déclarée comme IList<string>. Ce code fonctionnerait en fait comme écrit, contrairement aux réponses qui ont reçu plus de votes positifs avec ListaServizi.Sort(). Je ne dis pas que c'est la solution que je choisirais, mais c'était en fait la seule bonne réponse lorsque j'ai publié ma réponse.
phoog
Si ce n'est pas la solution que vous choisiriez, pourquoi la proposer comme réponse? Proposez ce que vous feriez comme réponse; si cela signifie changer le type de IList en List afin que vous puissiez l'appeler .Sort, alors pourquoi ne pas le faire.
Servy
1
@Servy Il a résolu le problème sans changer la spécification du problème. C'est de loin la méthode préférée. De plus, l'énoncé du problème utilise l'interface sur le modèle d'implémentation, ce qui est très important. Proposer le changement de type Liste est correct, mais doit être fait comme une réponse alternative, après la bonne, car cela nécessite de changer le problème.
Aurelien Ribon
1
@ AurélienRibon Rien dans l'énoncé du problème ne dit que le type de la variable ne peut pas être changé. Les exigences sont très spécifiques pour trier un fichier List. Et le coût associé à cette réponse est non négligeable et également inutile. Il ne gagne littéralement rien . Cela ajoute de la complexité au code, c'est moins concis, c'est moins efficace, il n'y a littéralement que des inconvénients ici.
D'autres réponses sont correctes à suggérer Sort, mais elles semblent avoir manqué le fait que l'emplacement de stockage est tapé comme IList<string. Sortne fait pas partie de l'interface.
Si vous savez qu'il ListaServizicontiendra toujours un List<string>, vous pouvez soit changer son type déclaré, soit utiliser un cast. Si vous n'êtes pas sûr, vous pouvez tester le type:
if(typeof(List<string>).IsAssignableFrom(ListaServizi.GetType()))((List<string>)ListaServizi).Sort();else{//... some other solution; there are a few to choose from.}
Peut-être plus idiomatique:
List<string> typeCheck =ListaServiziasList<string>;if(typeCheck !=null)
typeCheck.Sort();else{//... some other solution; there are a few to choose from.}
Si vous savez que cela ListaServizicontiendra parfois une implémentation différente de IList<string>, laissez un commentaire et j'ajouterai une suggestion ou deux pour le trier.
ListaServiziest IList<string>; l'interface n'a pas de Sortméthode. Vous avez au moins besoin d'un casting ici.
phoog
3
List<string> myCollection =newList<string>(){"Bob","Bob","Alex","Abdi","Abdi","Bob","Alex","Bob","Abdi"};
myCollection.Sort();foreach(var name in myCollection.Distinct()){Console.WriteLine(name +" "+ myCollection.Count(x=> x == name));}
.Sort
msdn.microsoft.com/en-us/library/b0zbh7b6%28v=vs.90%29.aspx ?Réponses:
la source
IList<string>
. Ce code fonctionnerait en fait comme écrit, contrairement aux réponses qui ont reçu plus de votes positifs avecListaServizi.Sort()
. Je ne dis pas que c'est la solution que je choisirais, mais c'était en fait la seule bonne réponse lorsque j'ai publié ma réponse..Sort
, alors pourquoi ne pas le faire.List
. Et le coût associé à cette réponse est non négligeable et également inutile. Il ne gagne littéralement rien . Cela ajoute de la complexité au code, c'est moins concis, c'est moins efficace, il n'y a littéralement que des inconvénients ici.Vous pouvez utiliser Trier
la source
D'autres réponses sont correctes à suggérer
Sort
, mais elles semblent avoir manqué le fait que l'emplacement de stockage est tapé commeIList<string
.Sort
ne fait pas partie de l'interface.Si vous savez qu'il
ListaServizi
contiendra toujours unList<string>
, vous pouvez soit changer son type déclaré, soit utiliser un cast. Si vous n'êtes pas sûr, vous pouvez tester le type:Peut-être plus idiomatique:
Si vous savez que cela
ListaServizi
contiendra parfois une implémentation différente deIList<string>
, laissez un commentaire et j'ajouterai une suggestion ou deux pour le trier.la source
Fera ça pour vous. C'est assez simple avec une liste de chaînes. Vous devez être un peu plus intelligent si vous triez des objets.
la source
ListaServizi
estIList<string>
; l'interface n'a pas deSort
méthode. Vous avez au moins besoin d'un casting ici.sortie: Abdi 3 Alex 2 Bob 4
la source