0

我正在尝试使用以下代码为排名表订购列表:

leagueTeamRow.OrderBy(c => c.points).ThenBy(c => c.goalDifference);

代码编译,但项目没有被排序,它们仍然以默认顺序显示。

这是我的课

public class LeagueRow
    {
        public String teamName { get; set; }
        public String managerName { get; set; }
        public Int32 played { get; set; }
        public Int32 won { get; set; }
        public Int32 draw { get; set; }
        public Int32 lost { get; set; }
        public Int32 goalsFor { get; set; }
        public Int32 goalsAgainst { get; set; }
        public Int32 goalDifference { get; set; }
        public Int32 points { get; set; }
    }

谁能建议我缺少什么?

4

5 回答 5

4

您错过了这一点OrderBy并且ThenBy没有对列表进行排序,他们会返回一个新的有序列表。

这是所有 LINQ 方法使用的相同模式。

于 2013-04-09T14:01:24.930 回答
3

leagueTeamRow您在检查订单时是否参考?您需要将结果保存OrderBy到变量中。

所以

var orderedLeagueTeamRow = leagueTeamRow.OrderBy(c => c.points).ThenBy(c => c.goalDifference);
于 2013-04-09T14:00:21.367 回答
3

OrderBy 返回一个IOrderedEnumerable:一个列表或实现 IEnumerable 的东西,然后是有序的。你没有分配那个!

var ordered = leagueTeamRow.OrderBy(c => c.points).ThenBy(c => c.goalDifference);

在有序变量中,按您设置的顺序排列

在这里查看更多

于 2013-04-09T14:00:45.690 回答
3

我认为您必须将语句的结果分配给变量

var ordered = leagueTeamRow.OrderBy(c => c.points).ThenBy(c => c.goalDifference);
于 2013-04-09T14:01:25.030 回答
3

您需要将排序结果分配给变量或其他东西:

var ordered = leagueTeamRow.OrderBy(c => c.points).ThenBy(c => c.goalDifference);
于 2013-04-09T14:01:35.757 回答