1

我有两个表“代码”和“视图”,并希望获得自 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,但随后它变为空(在尝试转换之前结果中有 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 回答