gpt4 book ai didi

c# - 如何按字母顺序按键对 SortedDictionary 集合进行排序

转载 作者:行者123 更新时间:2023-11-30 16:11:56 25 4
gpt4 key购买 nike

我有一个 SortedDictionary 的集合:

SortedDictionary<string, string> _variableValues = new SortedDictionary<string, string>();

键值对如下所示:

ThkPost_Point15  5
ThkPost_Point1 15
ThkPost_Point11 8
ThkPost_Point2 7
ThkPost_Point20 1
ThkPost_Point22 1

现在我想按字母顺序对它们进行排序。

我试着用

_variableValues.OrderBy(key => key.Key);

但我的问题是结果是:

ThkPost_Point1   15
ThkPost_Point11 8
ThkPost_Point15 5
ThkPost_Point2 7
ThkPost_Point20 1
ThkPost_Point22 1

但我正在寻找的是实现排序结果的解决方案,例如:

ThkPost_Point1   15
ThkPost_Point2 7
ThkPost_Point11 8
ThkPost_Point15 5
ThkPost_Point20 1
ThkPost_Point22 1

有没有办法使用 SortedDictionary 以这种方式对数据进行排序?

编辑:

我尝试实现 Babu 和 metacubed 的提示。

所以用下面的方式实现它

    static void Main(string[] args)
{
SortedDictionary<string, string> _varVal = new SortedDictionary<string, string>(StringComparer.OrdinalIgnoreCase);

_varVal.Add("Variable1", "Value1");
_varVal.Add("Variable2", "Value2");
_varVal.Add("Variable3", "Value3");
_varVal.Add("Variable4", "Value4");
_varVal.Add("Variable5", "Value5");

_varVal.Add("Variable10", "Value10");
_varVal.Add("Variable11", "Value11");
_varVal.Add("Variable12", "Value12");
_varVal.Add("Variable13", "Value13");
_varVal.Add("Variable14", "Value14");

_varVal.Add("Variable20", "Value20");
_varVal.Add("Variable22", "Value21");
_varVal.Add("Variable23", "Value22");
_varVal.Add("Variable24", "Value23");
_varVal.Add("Variable25", "Value24");

foreach (KeyValuePair<string, string> kvp in _varVal)
{
Console.WriteLine(kvp.Key,kvp.Value);
Debug.WriteLine(kvp.Key +" "+ kvp.Value);
}

Application.Run();
}

但是结果还是如下:

    Variable1 Value1
Variable10 Value10
Variable11 Value11
Variable12 Value12
Variable13 Value13
Variable14 Value14
Variable2 Value2
Variable20 Value20
Variable22 Value21
Variable23 Value22
Variable24 Value23
Variable25 Value24
Variable3 Value3
Variable4 Value4
Variable5 Value5

我错过了什么吗?

最佳答案

注意:修改是因为之前的回答没有正确解决问题。

您正在寻找的是所谓的“自然顺序”排序。与早期的解决方案相比,正确执行此操作要复杂得多。简而言之,您必须将字符串键拆分为数字和文本部分,然后按顺序对每个部分进行排序。如果该部分是类似数字的,则将其像数字一样排序。否则,将其排序为字符串。

查看此博文 Natural Sort Compare with Linq OrderBy一个可能的实现。原始出处为here .

关于c# - 如何按字母顺序按键对 SortedDictionary 集合进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23670814/

25 4 0
文章推荐: c# - WPF 事件触发器
文章推荐: c# - 在没有回发的情况下重置 ASP.NET 中的页面
文章推荐: javascript - 在 jQuery 点击功能上显示特定数量的
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com