如何通过值?</string,string>中的子字符串订购Dictionary <string,string>

时间:2012-10-30 20:21:39

标签: c# string dictionary substring delimited-text

我有一个Dictionary <string, string>,其中值是由:分隔的子串的串联。例如,123:456:Bob:Smith

我想按最后一个子串(Smith)升序排序,最好像这样:

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

所以,我需要以某种方式将x.Value视为string并通过提取第四个子字符串进行排序。有什么想法吗?

3 个答案:

答案 0 :(得分:6)

var ordered = unordered.OrderBy(x => x.Value.Split(':').Last())
                       .ToDictionary(x => x.Key, x => x.Value);

答案 1 :(得分:2)

尝试

orderedDictionary = unordered.OrderBy(x => x.Value.Substring(x.Value.LastIndexOf(":"))).ToDictionary(x => x.Key, x => x.Value);

答案 2 :(得分:1)

查看OrderBy IDictionary方法,特别是comparer注意{{1}}参数http://msdn.microsoft.com/en-us/library/bb549422.aspx。这应该指向正确的方向,我想你会发现学习剩余的好处。