IEnumerable列表没有正确重新排序string []列表

时间:2014-04-30 12:42:21

标签: c# linq list xna ienumerable

我有一个包含数组的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

为什么没有订购清单?

1 个答案:

答案 0 :(得分:5)

我认为问题是你将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