如何根据Dictionary int值订购Dictionary <int,string>列表?

mar*_*zzz 3 c# linq dictionary list

我有这个清单:

List<Dictionary<int, string>> list = new List<Dictionary<int, string>>();
Run Code Online (Sandbox Code Playgroud)

我想根据Dictionary int值来命令它(升序).我该怎么做?

示例:

Dictionary<int, string> Min1 = new Dictionary<int, string>();
Dictionary<int, string> Min2 = new Dictionary<int, string>();
Dictionary<int, string> Min3 = new Dictionary<int, string>();
Dictionary<int, string> Min4 = new Dictionary<int, string>();
Dictionary<int, string> Min5 = new Dictionary<int, string>();

Min1.Add(3, "name");
Min2.Add(1, "hello");
Min3.Add(5, "marco");
Min4.Add(4, "is");
Min5.Add(2, "my");

List<Dictionary<int, string>> list = new List<Dictionary<int, string>>();
list.Add(Min1);
list.Add(Min2);
list.Add(Min3);
list.Add(Min4);
list.Add(Min5);

// NOW I NEED TO ORDER list BASED ON DICTIONARY INT VALUE
// SO THE ORDER ON THE LIST SHOULD BE Min2, Min5, Min1, Min4, Min3
Run Code Online (Sandbox Code Playgroud)

我想对列表进行排序,所以当我循环它并且我得到字符串我打印"你好我的名字是marco"

Sae*_*iri 6

如果你想展平数据并对它们进行排序,你可以试试这个:

list.SelectMany(x=>x).OrderBy(x=>x.Key)
Run Code Online (Sandbox Code Playgroud)

但如果您不喜欢拼合数据并且只是排序词典,您可以这样做:

list.Select(x=>x.OrderBy(y=>y.Key));
Run Code Online (Sandbox Code Playgroud)

编辑:据我所知你只需要使用一个字典,所以你可以这样做:

Dictionary<int,string> dic = new Dictionary<int,string>();
var result = dic.OrderBy(x=>x.Key).ToLookup(x=>x);
Run Code Online (Sandbox Code Playgroud)

如果你想使用List而不是字典(在你的情况下似乎不好),你可以这样做;

 List<KeyValuePair<int,string>> lst1 = new List<KeyValuePair<int,string>>();
 var result = lst1.OrderBy(x=>x.Key).ToLookup(x=>x);
Run Code Online (Sandbox Code Playgroud)