2015-10-03 32 views
0

documentation for DbSet似乎沒有任何方法可以返回DbSet中的元素數目。也許我錯了。在任何情況下,讓我解釋一下我的情況:沒有辦法獲得DbSett類型的元素的長度/大小/數量?

我有一個表的一類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有一個佔位符,因爲有顯然不在一個DbSet一個length或同等性能。另一個問題是,Visual Studio是說

無法隱式轉換類型 'System.Linq.IQueryable' 到 'System.Data.Entity.DbSet'。存在明確的 轉換(您是否缺少演員?)

on Take語句。

這裏的任何指導?

回答

0

使用Take(5);如果甚至5個元素都不可用,它將需要最多5個元素或更少。

official documentation中,我們可以這樣理解:「枚舉源併產生元素,直到count元素已經產生或者orsource不包含更多元素。」

相關問題