20个观看次数最多的“代码”包括“用户”和“语言”

时间:2012-07-13 12:12:12

标签: c# .net linq

我有两个表“代码”和“视图”,并希望获得自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; }

1 个答案:

答案 0 :(得分:0)

简易解决方案:

IEnumerable<CodeModel> posts = _db.Codes
    .Include("User")
    .Include("Language")
    .OrderByDescending(f => f.ViewModels.Count(p => p.timestamp > dt))
    .Take(20);