我有一个返回列表的方法,我们称它为GetSomeStrings()。
我在string类上有一个扩展方法,返回字符串中的字符数,例如。myString.Number('A')。
我想,在一行中,拿一本字典。字典的条目包含字符串和字符串中所选字符的编号。
实际上,我做了以下工作:
var myDic = GetSomeStrings().ToDictionary(x=>x.Number('A'));这给了我一个字典<int,string>;我希望关键字作为字符串。
之后,我想根据int值对字典进行排序。可以在前面的语句中包括这一点吗?
我真的希望避免集合枚举来从列表中排序或创建字典,这是我实际上没有麻烦地做的事情。感谢您的优化帮助!
发布于 2010-09-01 00:37:56
常规字典不会排序,但您可以使用SortedDictionary:
var sortedDict = new SortedDictionary<string, int>(
GetSomeStrings().ToDictionary(x => x, y => y.Number('A')));这将为您提供一个SortedDictionary。
发布于 2017-02-08 17:50:37
如果我正确理解了这个问题,下面是我的解决方案:
var myDic = GetSomeStrings()
.Select(x => new KeyValuePair<string, int>(x, x.Number('A')))
.ToDictionary(t => t.Key, t => t.Value);发布于 2010-09-01 00:36:40
要构建您的字典,您可以这样做:
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()“的用法,它将字符串的长度转换为字符串。
此外,对字典进行排序通常没有意义。您可以对字典的每个键中的项进行排序,也可以在需要循环访问字典的键时对其进行排序。
var sortedKeys = dictionary.Keys.OrderBy(x => x);
var sortedValues = dictionary["1"].OrderBy(x => x);https://stackoverflow.com/questions/3611126
复制相似问题