繁体   English   中英

LINQ OrderBy无法使用字典键

[英]LINQ OrderBy not working on Dictionary Key

对我来说似乎还可以,但我的列表仍未按我的钥匙排序。

    var tagNamesAndRoutes = new Dictionary<string, string>();

    foreach (string name in tagNames)
    {
        tagNamesAndRoutes.Add(name, routeConstant);
    }

字典值示例:

Key       Value
"NUnit"     "/Category"
"WCF"       "/Category"
"ReSharper" "/Category"

等等。

我试图通过典型的LINQ对其进行排序:

tagNamesAndRoutes.OrderBy(c => c.Key);

但事实并非如此。

OrderBy实际上会返回您有序的集合。 尝试这个:

var orderedTagNamesAndRoutes = tagNamesAndRoutes.OrderBy(c => c.Key);

然后使用orderedTagNamesAndRoutes

如果您希望自己对字典进行排序,则可以使用SortedDictionary 尝试:

var tagNamesAndRoutes = new SortedDictionary<string, string>();

在这种情况下,您无需调用OrderBy 字典始终按键排序。

OrderBy返回一个IOrderedEnumerable ,您可以按照已排序的顺序进行迭代,并且不会修改实际的字典。

所以你需要做类似的事情

var sorted = tagNamesAndRoutes.OrderBy(c => c.Key);
foreach (string name in sorted) {
    ...
}

字典类型本身没有键的顺序概念。 如果您始终希望对键进行排序,则可以使用SortedDictionary。

https://msdn.microsoft.com/zh-CN/library/vstudio/bb534966%28v=vs.100%29.aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM