首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用.ToDictionary()

使用.ToDictionary()
EN

Stack Overflow用户
提问于 2010-09-01 00:31:56
回答 6查看 101.7K关注 0票数 70

我有一个返回列表的方法,我们称它为GetSomeStrings()

我在string类上有一个扩展方法,返回字符串中的字符数,例如。myString.Number('A')

我想,在一行中,拿一本字典。字典的条目包含字符串和字符串中所选字符的编号。

实际上,我做了以下工作:

代码语言:javascript
复制
var myDic = GetSomeStrings().ToDictionary(x=>x.Number('A'));

这给了我一个字典<int,string>;我希望关键字作为字符串。

之后,我想根据int值对字典进行排序。可以在前面的语句中包括这一点吗?

我真的希望避免集合枚举来从列表中排序或创建字典,这是我实际上没有麻烦地做的事情。感谢您的优化帮助!

EN

回答 6

Stack Overflow用户

发布于 2010-09-01 00:37:56

常规字典不会排序,但您可以使用SortedDictionary:

代码语言:javascript
复制
var sortedDict = new SortedDictionary<string, int>(
    GetSomeStrings().ToDictionary(x => x, y => y.Number('A')));

这将为您提供一个SortedDictionary。

票数 12
EN

Stack Overflow用户

发布于 2017-02-08 17:50:37

如果我正确理解了这个问题,下面是我的解决方案:

代码语言:javascript
复制
var myDic = GetSomeStrings()
.Select(x => new KeyValuePair<string, int>(x, x.Number('A')))
.ToDictionary(t => t.Key, t => t.Value);
票数 10
EN

Stack Overflow用户

发布于 2010-09-01 00:36:40

要构建您的字典,您可以这样做:

代码语言:javascript
复制
var strings = new[] { "one", "2", "three", "four", "five", "six", "seven", "eight", "nine", "ten" };
var dictionary = strings.GroupBy(x => x.Length.ToString()).ToDictionary(x => x.Key, x => x);

注意"ToString()“的用法,它将字符串的长度转换为字符串。

此外,对字典进行排序通常没有意义。您可以对字典的每个键中的项进行排序,也可以在需要循环访问字典的键时对其进行排序。

代码语言:javascript
复制
var sortedKeys = dictionary.Keys.OrderBy(x => x);
var sortedValues = dictionary["1"].OrderBy(x => x);
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3611126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档