我有一个数组列表。每个阵列由分数和难度组成。从文本文件中读入。
这是我获取数据并按降序按降序排序的方式。
// load highscores
public void LoadScores()
{
// loop through each line in the file
while ((line = file.ReadLine()) != null)
{
// seperate the score from the difficulty
lineData = line.Split(',');
// add each line to the list
list.Add(lineData);
}
// order the list by descending order
IOrderedEnumerable<String[]> scoresDesc = list.OrderByDescending(ld => lineData[0]);
}
是否可以在IOrderedEnumerable
添加a子句,以便按难度为1
的降序按分数排序?
答案 0 :(得分:2)
假设&#34;难度&#34;是数组中的第二项:
IEnumerable<String[]> scoresDesc =
list.OrderByDescending(ld => lineData[0])
.Where(ld => lineData[1] == 1);
之后可以对其进行排序,但Where
会返回IEnumerable<T>
,而不是IOrderedEnumerable<T>
,所以如果你需要它要成为IOrderedEnumerable<T>
,那么首先过滤清单(并且更快):
IOrderedEnumerable<String[]> scoresDesc =
list.Where(ld => lineData[1] == 1)
.OrderByDescending(ld => lineData[0]);
(这是var
缓解一些痛苦的地方,因为你没有被绑定到返回类型)
答案 1 :(得分:0)
如果您要过滤那些难度1,可以使用.Where()
扩展方法,如果您想按多个字段排序,则可以使用.ThenBy()
扩展方法。< / p>
答案 2 :(得分:0)
首先过滤然后订购:
list.Where(x => x.difficulty == 1).OrderByDescending(ld => lineData[0]);