首页 > 解决方案 > C# Linq-to-Entities OrderByDescending isn't working

问题描述

Here is my entity called SportTeam:

public class SportTeam : BaseEntity
{
    public int Id { get; set; } 
    public int SportId { get; set; }
    public int TeamId { get; set; }

    public int TotalPlays { get; set; }
    public int TotalWins { get; set; }
    public int TotalDefeats { get; set; }
    public int TotalDraws { get; set; }
    public float WinPercentage { get; set; }
    public float Score { get; set; }

    // navs
    public virtual Ladder Ladder { get; set; }
    public int? LadderId { get; set; }
    public virtual Sport Sport { get; set; }
    public virtual Team Team { get; set; }
    public ICollection<Match> HomeMatches { get; set; }
    public ICollection<Match> RivalMatches { get; set; }
    public ICollection<Match> VictorMatches { get; set; }
    public virtual ICollection<TeamMember> TeamMembers { get; set; }
    public virtual ICollection<Tournament> Tournaments { get; set; }

    public override bool Equals(object obj)
    {
        SportTeam sportTeam = (SportTeam)obj;

        if (sportTeam.Id == Id)
            return true;
        else 
            return false;
    }

    public override int GetHashCode()
    {
        return 2108858624 + Id.GetHashCode();
    }
}

I am trying to sort the SportTeam entity by score by doing this

List<SportTeam> sportTeams =
                dbContext.SportTeams
                         .Where(st => st.SportId == sportTeam.SportId)
                         .OrderByDescending(st => sportTeam.Score)
                         .ToList();

However when I add a watch over the sportTeams list, the list doesn't appear to be ordered by score at all. I just get an as in representation of the table.

Any hints?

标签: c#sql-serverlinqentity-framework-6

解决方案


您正在对一个常数值进行排序 ( sportTeam.Score) 尝试

OrderByDescending(st => st.Score)

代替

OrderByDescending(st => sportTeam.Score)

推荐阅读