Domanda

Ho un elenco di Foo.

Foo ha una proprietà stringa denominata Bar.

mi piacerebbe usare LINQ per ottenere una stringa[] di distinto valori per Foo.Bar nell'elenco di Foo.

Come posso fare questo?

È stato utile?

Soluzione

Io andrei lambda...mooolto più carino

var bars = Foos.Select(f => f.Bar).Distinct().ToArray();

funziona allo stesso modo di quello pubblicato da @lassevk.

Aggiungo anche che potresti voler evitare la conversione in un array fino all'ultimo minuto.

LINQ esegue alcune ottimizzazioni dietro le quinte, le query rimangono nel relativo modulo di query finché non sono esplicitamente necessarie.Quindi potresti voler prima creare tutto ciò di cui hai bisogno nella query in modo che ogni possibile ottimizzazione venga applicata del tutto.

Per valutazione intendo chiedere qualcosa che richieda esplicitamente una valutazione come "Count()" o "ToArray()" ecc.

Altri suggerimenti

Questo dovrebbe funzionare se vuoi usare il modello fluente:

string[] arrayStrings = fooList.Select(a => a.Bar).Distinct().ToArray();

Prova questo:

var distinctFooBars = (from foo in foos
                       select foo.Bar).Distinct().ToArray();

Non dovresti essere in grado di fare qualcosa del tipo:

var strings = (from a in fooList select a.Bar).Distinct();
string[] array = strings.ToArray();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top