C#Linq返回SortedList

时间:2011-09-14 00:34:05

标签: c# linq sortedlist

如何在C#中使Linq返回SortedList给定IEnumerable?如果我不能,是否可以将IEnumerable转换为SortedList

3 个答案:

答案 0 :(得分:18)

最简单的方法可能是使用ToDictionary创建字典,然后调用SortedList<TKey, TValue>(dictionary)构造函数。或者,添加您自己的扩展方法:

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;
}

这将允许您创建具有匿名类型的SortedList作为值:

var list = people.ToSortedList(p => p.Name,
                               p => new { p.Name, p.Age });

答案 1 :(得分:4)

您需要使用IDictionary构造函数,因此请在linq查询中使用ToDictionary扩展名方法,然后使用新的SortedList(dictionary);

e.g。

 var list=new SortedList(query.ToDictionary(q=>q.KeyField,q=>q));

答案 2 :(得分:0)

这样的东西很好用

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 ) );