IEnumerable列表未正确重新排序字符串[]列表

本文关键字:列表 排序 字符串 新排序 IEnumerable | 更新日期: 2023-09-27 18:01:00

我有一个包含数组的string[]列表。

数组包含两个元素,[0]=分数,[1]=难度(1或2(。

我使用下面的LINQ语句按照难度为2的分数降序对列表进行重新排序。

scoresDesHard = list.OrderByDescending(ld => lineData[0]).Where(ld => lineData[1] == "2");

我目前正在XNA中的屏幕上绘制新订购的列表,如下所示:

// draw highscores to the screen
public void Draw(SpriteBatch spriteBatch)
{
    string mainString = "";
    // build the hard list string
    foreach (var li in scoresDesHard)
    {
        mainString += li[0] + " " + li[1] + "'r'n";
    }
    spriteBatch.DrawString(scoreFont, ""+ mainString, hardScoresPos, Color.White);
}

它根本没有排序,而是显示了两个困难的分数:

000001 1
000001 2
122122 1
125555 1
22 1
23131 2

它应该输出:

23131 2
00001 2

为什么它没能排序?

IEnumerable列表未正确重新排序字符串[]列表

我认为问题是您正在将ld传递到Lambda中,但检查lineData[1] == 2我认为LINQ语句应该看起来像这个

scoresDesHard = list.Where(x => x[1] == "2").OrderByDescending(y => y[0]);

list.Where(foo => bar.Value1 == 123) //Always true or always false
list.Where(foo => foo.Value1 == 123) //checks each item in the list