Sort Dictionary <int,tuple <int,=“”int,=“”int,=“”string,=“”int =“”>&gt;通过元组的元素

时间:2017-02-16 12:12:52

标签: c#

我有一个Dictionary<int, Tuple<int, string, int, bool>>对象,我想知道如何通过元组值的第三个元素对字典中的元素进行排序(我的意思是第二个&#34; int&#34;在{ {1}})。

3 个答案:

答案 0 :(得分:2)

你不能对字典进行排序,这样就没有意义,因为它会破坏字典的目的(排序会破坏哈希表)。

您可以从字典中获取项目并对其进行排序,如下所示:

List<KeyValuePair<int, Tuple<int, string, int, bool>> list;
list = dict.OrderBy(kvp => kvp.Value.Item3).ToList();

如您所见,最终结果是列表,而不是字典。

答案 1 :(得分:0)

您可以通过转换为列表或数组并就地排序来避免一些额外的内存分配:

var arr = dic.ToArray();
Array.Sort(arr, (a, b) => a.Value.Item3.CompareTo(b.Value.Item3)); 

答案 2 :(得分:0)

我认为这对您来说太晚了,但是如果有人仍在寻找这种信息,这就是我对这种信息进行排序的方式

var myDict = from entry in yourDictionary orderby entry.Value.Item3 descending select entry;

这将对字典进行降序排序,以Tuple的第三个值为单位,如果您要查找的是ascending而不是descending,希望可以帮助某人