如何按“值”按降序对列表进行排序,并按“键”对重复项进行排序?

时间:2011-03-15 05:31:41

标签: c#

我已经浏览了整个互联网,试图找到如何修复以下内容的示例。

如何按“值”按顺序对列表中的列表进行排序,并按“键”对重复项进行排序? 然后以下面的格式打印结果。

我已经附上我的代码并且它可以工作,但是当存在重复值时会出现问题,这在使用SortedList()时会发生。如果有人可以修改此代码或者告诉我如何以另一种方式执行此操作,我会非常感激它,这同样快速而有效。

非常感谢你。

分拣前:

VALUE's,KEY's

sL.Add(1269.63,"white");
sL.Add(1270.36,"orange");
sL.Add(1272.06,"yellow");
sL.Add(1271.50,"cyan");
sL.Add(1272.06,"black");
sL.Add(1274.12,"dodBlue");
sL.Add(1276.02,"blue");
sL.Add(1273.21,"green");
sL.Add(1275.52,"red");

排序后:

VALUE's,KEY's

sL.Add(1276.02,"blue");
sL.Add(1275.52,"red");
sL.Add(1274.12,"dodBlue");
sL.Add(1273.21,"green");
sL.Add(1272.06,"black");
sL.Add(1272.06,"yellow");
sL.Add(1271.50,"cyan");
sL.Add(1270.36,"orange");
sL.Add(1269.63,"white");

CODE:

SortedList sL = new SortedList();

sL.Add(SMA(8)[0], "white");
sL.Add(SMA(10)[0], "orange");
sL.Add(SMA(13)[0], "yellow");
sL.Add(SMA(20)[0], "cyan");
sL.Add(SMA(30)[0], "black");
sL.Add(SMA(40)[0], "dodBlue");
sL.Add(SMA(50)[0], "blue");
sL.Add(SMA(100)[0], "green");
sL.Add(SMA(200)[0], "red");

Print("  " + " " + sL.GetByIndex(8) + " " + ">=" + " " + sL.GetByIndex(7));
Print("&&" + " " + sL.GetByIndex(7) + " " + ">=" + " " + sL.GetByIndex(6));
Print("&&" + " " + sL.GetByIndex(6) + " " + ">=" + " " + sL.GetByIndex(5));
Print("&&" + " " + sL.GetByIndex(5) + " " + ">=" + " " + sL.GetByIndex(4));
Print("&&" + " " + sL.GetByIndex(4) + " " + ">=" + " " + sL.GetByIndex(3));
Print("&&" + " " + sL.GetByIndex(3) + " " + ">=" + " " + sL.GetByIndex(2));
Print("&&" + " " + sL.GetByIndex(2) + " " + ">=" + " " + sL.GetByIndex(1));
Print("&&" + " " + sL.GetByIndex(1) + " " + ">=" + " " + sL.GetByIndex(0));

打印输出结果:

  

蓝色> =红色;

     

&安培;&安培;红色> = dodBlue;

     

&安培;&安培; dodBlue> =绿色;

     

&安培;&安培;绿色> =黄色;

     

&安培;&安培;黄色> =黑色;

     

&安培;&安培;黑色> =青色;

     

&安培;&安培;青色> =橙色;

     

&安培;&安培;橙色> =白色;

2 个答案:

答案 0 :(得分:0)

为什么不为此使用LINQ? OrderBy()和Distinct()方法将对您有所帮助。

答案 1 :(得分:0)

您可以使用LINQ执行此操作,如下所示:

        Dictionary<int, string> lst = new Dictionary<int,string>(10);

        lst.Add(7, "MAX");
        lst.Add(2, "A");
        lst.Add(1, "A");
        lst.Add(8, "0");

        Dictionary<int, string> newList = (lst.OrderBy(x => x.Value).ThenBy(x => x.Key)).ToDictionary(x => x.Key,x=>x.Value);
相关问题