4

我有一个Dictionary <string, string>where 值是用 a 分隔的子字符串的串联:。例如,123:456:Bob:Smith

我想按最后一个子字符串(史密斯)升序对字典进行排序,最好是这样:

orderedDictionary = unordered
                        .OrderBy(x => x.Value)
                        .ToDictionary(x => x.Key, x => x.Value);

因此,我需要以某种方式将其x.Value视为 astring并通过提取第四个子字符串进行排序。有任何想法吗?

4

3 回答 3

6
var ordered = unordered.OrderBy(x => x.Value.Split(':').Last())
                       .ToDictionary(x => x.Key, x => x.Value);
于 2012-10-30T20:28:15.130 回答
2

尝试

orderedDictionary = unordered.OrderBy(x => x.Value.Substring(x.Value.LastIndexOf(":"))).ToDictionary(x => x.Key, x => x.Value);
于 2012-10-30T20:26:01.240 回答
1

看一下OrderByMethod of IDictionary,特别是这个http://msdn.microsoft.com/en-us/library/bb549422.aspx注意comparer参数。那应该为您指明正确的方向,我认为您会发现学习其余的好处。

于 2012-10-30T20:27:05.937 回答