gpt4 book ai didi

多对多 EF Code First 对象中带有 where 子句的 Linq

转载 作者:行者123 更新时间:2023-12-01 00:36:23 27 4
gpt4 key购买 nike

在 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>();
}
}

Code First 然后正确地为这个关系创建了一个额外的表,因为它是多对多的。

我的问题是当我需要带有事件类(class)的类别列表 (IsActive==true) 时。例如,这在这里是不可能的:
var categories = db.Categories.Where(x => x.Courses.Where(y => y.IsActive)).ToList();

任何输入如何获得只有事件类(class)的类别列表?

谢谢!

最佳答案

此查询将返回至少有一个事件类(class)的所有类别:

var categories = db.Categories
.Where(x => x.Courses.Any(y => y.IsActive))
.ToList();

此查询将返回所有类(class)都处于事件状态的类别。例如,如果一个类别有两门类(class),其中一门类(class)处于非事件状态,则该类别将从查询中排除:
var categories = db.Categories
.Where(x => x.Courses.All(y => y.IsActive))
.ToList();

关于多对多 EF Code First 对象中带有 where 子句的 Linq,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16160747/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com