Voici le code:
List<string>NewList=new List<string>(); foreach(Child C in Test) { NewList.Add(C.A); }
Maintenant, je veux récupérer toute la chaîne
A du List
.
Je dois encore le faire comme ceci:
private struct Child { public string A; public string B; public boolean C; } List<Child> Test=new List<Child>();
C'est tellement gênant que je veux savoir s'il y a un moyen plus rapide, par exemple en utilisant le lambda?
Merci.
3 Réponses :
var NewList = Test.Select(x => x.A).ToList(); but this is not faster, only a little less code.
Eh bien, c'est ce dont j'ai besoin. Merci.
Comme mentionné dans cette réponse: https://stackoverflow.com/a/1178913/3121280
vous pouvez le faire comme ceci: p >
NewList = Test.Select( x => x.A ).ToList();
c #
est un langage sensible à la casse. .select
n'est PAS la même chose que .Select
.
@AFract J'ai 19k rep, et j'aurais pu l'éditer moi-même. Il est généralement mal vu de modifier le code des autres dans leurs messages et de les aider à comprendre pourquoi le message est incorrect ou peut-être mal interprété. (Peut-être voulait-il dire utiliser un .select
d'une autre bibliothèque?)
@FrankerZ Je n'ai pas regardé votre propre réputation, seulement celle de mohRamadan, qui est un nouveau venu. Il se donne un lien vers une réponse qui s'appuie sur la méthode native Linq "Select", il n'y a absolument aucune raison ici d'utiliser une autre bibliothèque, et les noms de méthodes en C # commencent par des majuscules. Donc, pour moi, c'était évidemment une faute de frappe et il m'a semblé utile d'améliorer le message simplement en le corrigeant. Mais je suis d'accord sur vos arguments dans un cas général.
Sélectionnez
montré par d'autres est ce dont vous avez besoin ici, mais il convient de mentionner SelectMany
pour les moments où vous avez besoin de petits-enfants.
C1_C1, C1_C2, C2_C1, C2_C2
L'extrait ci-dessus renvoie ce qui suit:
private class Child { public string Name { get; set; } public List<Child> Children { get; set; } } public static void Main() { var children = new List<Child>(){ new Child{ Name = "C1", Children = new List<Child>{ new Child{ Name = "C1_C1"}, new Child{ Name = "C1_C2"} }}, new Child{ Name = "C2", Children = new List<Child>{ new Child{ Name = "C2_C1"}, new Child{ Name = "C2_C2"} }} }; var granchildren = children.SelectMany( c => c.Children); Console.WriteLine(string.Join(", ", granchildren.Select(c => c.Name))); }
Ni lié à la question, mais toujours utile à savoir. J'ai vu trop de développeurs C # qui n'étaient pas au courant de SelectMany ().
Liste newList = Test.Select (x => x.A) .ToList ();