如何使用 LinQ To Entities 从多个表中获取数据行

How to get rows of Data from Multiple Tables using LinQ To Entities

我正在使用 dbcontext Code first 获取基于此条件的查询,用于下面的 类(表):

创作者 != null && ArticleAttached != null && !IsCancelled

var ArticleStudentLiked = dbcontext.LearningActivites
  .Where(la => la.Creator != null && la.ArticleAttached != null && !la.IsCancelled)
  .Sum(la => la.ArticleAttached.StudentsLiked.Count);

  var NewsArticleComment = dbcontext.LearningActivites
  .Where(la => la.Creator != null && la.ArticleAttached != null && !la.IsCancelled)
  .Sum(la => la.ArticleAttached.Comments.Count);

仅以下方法 return 算作:

我需要从查询中获取记录行到单个 collection 中,我可以将其传递给视图以逐行显示

像这样:

文章标题、点赞数、评论数

如何使用 LinQ 获取这些:文章标题,编号。点赞数,评论数

Classes:


 public class LearningActivity
 {
   public virtual ArticleCreator Creator { get; set; }        
   public virtual ArticleCreator EditedBy { get; set; }        
   public virtual Teacher CreatedByTeacher { get; set; }   
   public virtual Article ArticleAttached { get; set; }   
   public virtual Article ArticleAttachedByOther { get; set; } 
   public bool IsCancelled { get; set; }
 }


 public class Article 
 {
   public string ArticleTitle {get;set;}
   public virtual IList<Teacher> TeachersLiked { get; set; }
   public virtual IList<Student> StudentsLiked { get; set; }
   public virtual IList<ArticleComment> Comments { get; set; }
 }


 public class Student
 {
   public virtual IList<ArticleCommentStudent> Comments { get; set; }
 }

谢谢

你能试试这个吗

// LikeCount is total of Teacher and Student Likes 
// and where clause can be added before Select
var result = dbcontext.Classes
            .Select(x=> new { ArticleTitle = x.ArticleTitle, 
                              LikeCount = x.TeachersLiked.Count() + x.StudentsLiked.Count(), 
                              CommentCount= x.Comments.Count }).First();