无法获得DbSett类型元素的长度/大小/数量?

时间:2015-10-03 23:42:34

标签: c# asp.net asp.net-mvc linq

documentation for DbSet似乎没有任何方法可以返回DbSet中的元素数量。也许我错了。无论如何,让我解释一下我的情况:

我有一个类Score在我的数据库中建模表的行

public partial class Score
{
    public Score()
    {
        GameLogs = new HashSet<GameLog>();
    }

    public int id { get; set; }

    [Column("score")]
    public int score1 { get; set; }

    [StringLength(50)]
    public string name { get; set; }

    public DateTime playdate { get; set; }

    public virtual ICollection<GameLog> GameLogs { get; set; }
}

并且表的模型是DbSet<Score>类型,我正在尝试创建一个方法,该方法返回由score1排序的前5行,或者,如果数据库少于5行,返回score1排序的所有行。

我拥有的是

    public DbSet<Score> getTopFiveOrFewerScores ( )
    {
        return (
                  from s in SD.Scores
                  orderby s.score1 descending
                  select s
                ).Take(Math.Min(SD.Scores.length, 5));
    }

主要问题是我将length作为占位符放在那里,因为length上显然没有DbSet或同等属性。另一个问题是Visual Studio正在说

  

无法隐式转换类型   'System.Linq.IQueryable'来   'System.Data.Entity.DbSet'。一个明确的   存在转换(你错过了演员吗?)

在Take语句上

这里有什么指导吗?

1 个答案:

答案 0 :(得分:0)

使用Take(5);如果不是5个元素,则最多需要5个元素或更少元素。

official documentation中,我们可以读到:“在枚举元素产生之前,枚举source和yield元素,orsource不再包含元素。”。