1

「Codes」と「Views」の 2 つのテーブルがあり、x 日前から最も多くのビューが含まれている 20 個のコードのリストを取得したいと考えています (これが私の変数 dt です)。リストを取得して並べ替えることができますが、問題があり、「ユーザー」と「言語」の2つのテーブルも含めたいと考えています。

var query = from f in _db.Codes
            select new
            {
                Code = f,
                PostCount = f.ViewModels.Count(p => p.timestamp > dt)
            };

var result = query.OrderByDescending(x => x.PostCount).Select(y => y.Code).Take(20)

しかし、このようにした後、他のテーブルを含めることができません。結果を ObjectQuery に変換しようとしましたが、null になります (変換を試みる前の結果には 20 個のコードがあります)。

コードモデルは次のようになります

        [Key]
    public int CodeID { get; set; }
    public int UserID { get; set; }
    public UserModel User { get; set; }

    [DisplayName("Language")] 
    public int LanguageID { get; set; }
    public LanguageModel Language { get; set; }

    public virtual ICollection<ViewModel> ViewModels { get; set; }
4

1 に答える 1

0

簡単な解決策:

IEnumerable<CodeModel> posts = _db.Codes
    .Include("User")
    .Include("Language")
    .OrderByDescending(f => f.ViewModels.Count(p => p.timestamp > dt))
    .Take(20);
于 2012-07-15T18:12:48.893 に答える