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.

Était-ce utile?

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
scroll top