And*_*ers 5 linq entity-framework ef-code-first asp.net-mvc-4
在 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()
{
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>();
}
}
Run Code Online (Sandbox Code Playgroud)
Code First 然后正确地为这个关系创建了一个额外的表,因为它是多对多的。
我的问题是当我需要带有活动课程的类别列表 (IsActive==true) 时。例如,这在这里是不可能的:
var categories = db.Categories.Where(x => x.Courses.Where(y => y.IsActive)).ToList();
Run Code Online (Sandbox Code Playgroud)
任何输入如何获得只有活动课程的类别列表?
谢谢!
此查询将返回至少有一个活动课程的所有类别:
var categories = db.Categories
.Where(x => x.Courses.Any(y => y.IsActive))
.ToList();
Run Code Online (Sandbox Code Playgroud)
此查询将返回所有课程都处于活动状态的类别。例如,如果一个类别有两门课程,其中一门课程处于非活动状态,则该类别将从查询中排除:
var categories = db.Categories
.Where(x => x.Courses.All(y => y.IsActive))
.ToList();
Run Code Online (Sandbox Code Playgroud)