在多对多EF代码第一个对象中使用where子句的Linq
在MVC4项目中,首先使用代码,我有以下几点:在多对多EF代码第一个对象中使用where子句的Linq,linq,entity-framework,asp.net-mvc-4,ef-code-first,Linq,Entity Framework,Asp.net Mvc 4,Ef Code First,在MVC4项目中,首先使用代码,我有以下几点: public class Course { public string CourseId { get; set; } public string Name { get; set; } public bool IsActive { get; set; } public virtual Categories ICollection<Category> { get; set; } public Course
public class Course
{
public string CourseId { get; set; }
public string Name { get; set; }
public bool IsActive { get; set; }
public virtual Categories ICollection<Category> { get; set; }
public Course()
{
Categories = new HashSet<Category>();
}
}
public class Category
{
public string CategoryId { get; set; }
public string Name { get; set; }
public virtual Courses ICollection<Course> { get; set; }
public Category()
{
Courses = new HashSet<Course>();
}
}
我如何得到一个只有活动课程的类别列表
谢谢 此查询将返回至少有一个课程处于活动状态的所有类别:
var categories = db.Categories
.Where(x => x.Courses.Any(y => y.IsActive))
.ToList();
此查询将返回课程全部处于活动状态的所有类别。例如,如果一个类别有两门课程,而其中一门课程处于非活动状态,则该类别将从查询中排除:
var categories = db.Categories
.Where(x => x.Courses.All(y => y.IsActive))
.ToList();
已尝试,并且它还包括IsActive为false的所有课程。查询将包括至少有一个课程处于活动状态的类别。如果某个类别至少有一个非活动课程,是否要排除该类别?否,我想查看所有有课程的类别,但不包括非活动的课程。
var categories = db.Categories
.Where(x => x.Courses.All(y => y.IsActive))
.ToList();