【发布时间】:2014-04-30 12:42:21
【问题描述】:
我有一个包含数组的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
为什么排序失败?
【问题讨论】:
-
您的查询应该有效。确保在应用过滤后枚举结果。附带问题 - 如果分数和难度都是数字,为什么要使用字符串?
-
你确定没有2个变量
scoresDesHard不小心吗?一个在设置它的方法中声明,一个在更大的范围内声明? -
字符串排序是字典序,需要按分数的数值排序。您应该创建自己的类型,而不是将事物表示为字符串数组。
-
@SergeyBerezovskiy 好点,我会将其更改为 int 列表。 “枚举结果”是什么意思?
-
请发布一些实际代码。您发布的 linq 查询甚至无效
标签: c# linq list xna ienumerable