我有一个Dictionary <string, string>
,其中值是由:
分隔的子串的串联。例如,123:456:Bob:Smith
。
我想按最后一个子串(Smith)升序排序,最好像这样:
orderedDictionary = unordered
.OrderBy(x => x.Value)
.ToDictionary(x => x.Key, x => x.Value);
所以,我需要以某种方式将x.Value
视为string
并通过提取第四个子字符串进行排序。有什么想法吗?
答案 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。这应该指向正确的方向,我想你会发现学习剩余的好处。