OrderBy编译但不订购

时间:2013-04-09 13:58:22

标签: c#

我正在尝试使用以下代码为联赛表订购一个列表:

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; }
    }

任何人都可以建议我缺少什么吗?

5 个答案:

答案 0 :(得分:4)

您遗漏了OrderByThenBy没有对列表进行排序,它们会返回一个新的有序列表。

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

答案 1 :(得分:3)

您在检查订购时是否引用leagueTeamRow?您需要将OrderBy的结果保存到变量。

所以

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

答案 2 :(得分:3)

OrderBy返回IOrderedEnumerable:一个列表或实现IEnumerable的东西,然后被排序。你没有指定它!

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

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

查看更多here

答案 3 :(得分:3)

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

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

答案 4 :(得分:3)

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

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