In che modo è possibile ottenere Linq in C# per restituire undato un IEnumerable
? Se non riesco, è possibile trasmettere o trasformare lo IEnumerable
in un SortedList
?C# Linq return SortedList
10
A
risposta
15
Il modo più semplice sarebbe probabilmente quello di creare un dizionario utilizzando ToDictionary
e quindi chiamare il costruttore SortedList<TKey, TValue>(dictionary)
. In alternativa, aggiungere il proprio metodo di estensione:
public static SortedList<TKey, TValue> ToSortedList<TSource, TKey, TValue>
(this IEnumerable<TSource> source,
Func<TSource, TKey> keySelector,
Func<TSource, TValue> valueSelector)
{
// Argument checks elided
SortedList<TKey, TValue> ret = new SortedList<TKey, TValue>();
foreach (var item in source)
{
// Will throw if the key already exists
ret.Add(keySelector(item), valueSelector(item));
}
return ret;
}
Questo vi permetterà di creare SortedList
s con i tipi anonimi, come i valori:
var list = people.ToSortedList(p => p.Name,
p => new { p.Name, p.Age });
4
Sarà necessario utilizzare il costruttore IDictionary
quindi utilizzare l'estensione ToDictionary
metodo sulla query linq e quindi utilizzare il nuovo
es.
var list=new SortedList(query.ToDictionary(q=>q.KeyField,q=>q));
0
Qualcosa del genere funziona bene
List<MyEntity> list = DataSource.GetList<MyEntity>(); // whatever data you need to get
SortedList<string, string> retList = new SortedList<string, string>();
list.ForEach (item => retList.Add (item.IdField, item.Description));