我正在尝试使用以下代码为联赛表订购一个列表:
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; }
}
任何人都可以建议我缺少什么吗?
答案 0 :(得分:4)
您遗漏了OrderBy
和ThenBy
没有对列表进行排序,它们会返回一个新的有序列表。
这与所有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);