Rouleau peuplant un dictionnaire dans un LINQ de Pour l'expression
-
10-10-2019 - |
Question
J'ai un objet de données
Data = class
public
s: string;
i: Integer;
end;
avec beaucoup d'entre eux dans une liste (ou une collection):
var ol : List<Data> := new List<Data>;
ol.Add(new Data(s := 'One', i := 1));
ol.Add(new Data(s := 'Two', i := 2));
ol.Add(new Data(s := 'Three', i := 3));
ol.Add(new Data(s := 'Four', i := 4));
ol.Add(new Data(s := 'Five', i := 5));
Et je veux le mettre dans un dictionnaire:
var l: Dictionary<string, data> := new Dictionary<String,Data>;
Je sais que je peux faire pour ou pour chaque boucle pour faire
for each d in ol do
begin
l.Add(d.s, d);
end;
Mais je veux utiliser soit une déclaration de LINQ (préféré) ou un Pour l'expression boucle . Il est facile quand seul le retour d'un élément, mais pas sûr de la syntaxe pour les deux éléments pour un dictionnaire.
La solution
EDIT: Je sauté à droite dans cela, mais je ne suis pas familier avec Delphi. En C #, il serait aussi simple que cet appel ToDictionary
:
var dict = ol.ToDictionary(o => o.s, o => o);
Je pense que l'équivalent Delphi serait:
var dict := ol.ToDictionary(o -> o.s, o -> o);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow