C# Linq 返回 SortedList

发布于 2024-12-04 05:34:11 字数 279 浏览 4 评论 0原文

如何让 C# 中的 Linq 返回 SortedList< /code>给定一个 IEnumerable?如果不能,是否可以将 IEnumerable 转换或转换为 SortedList

How can I get Linq in C# to return a SortedList given an IEnumerable? If I can't, is it possible to cast or transform the IEnumerable to a SortedList?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

粉红×色少女 2024-12-11 05:34:11

最简单的方法可能是使用 ToDictionary 创建字典,然后调用 SortedList(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 });

The simplest way would probably be to create a dictionary using ToDictionary, and then call the SortedList<TKey, TValue>(dictionary) constructor. Alternatively, add your own extension method:

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

This will allow you to create SortedLists with anonymous types as the values:

var list = people.ToSortedList(p => p.Name,
                               p => new { p.Name, p.Age });
千纸鹤 2024-12-11 05:34:11

您将需要使用 IDictionary 构造函数,因此在 linq 查询上使用 ToDictionary 扩展方法,然后使用 new SortedList(dictionary);

例如

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

You will need to use the IDictionary constructor so use the ToDictionary extension method on your linq query and then use new SortedList(dictionary);

e.g.

 var list=new SortedList(query.ToDictionary(q=>q.KeyField,q=>q));
桃酥萝莉 2024-12-11 05:34:11

像这样的东西工作得很好

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

Something like this works just fine

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 ) );
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文