我有一个包含数组的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
为什么没有订购清单?
答案 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