我有一个与子 Members 表关联的 MembershipGroups 表。成员表有一个状态列,可以设置为“事件”或“非事件”。
我想选择所有成员(member)组并仅选择其活跃成员(member)
举个例子,
成员(member)组
ID----标题
1-----组 #1
2-----组#2
成员
MembershipGroupID-名称--状态
1-------------------------------------约翰----活跃
1-------------------------------------莎莉----不活动
1-------------------------------------大卫---不活跃
我正在尝试创建一个类似于以下内容的查询(当前不起作用):
var query = from mg in db.MembershipGroups
where mg.Members.Status = "Active"
select mg
此示例的结果应返回 ID#1 的 MembershipGroup,仅包含一个子成员实体
如何使用 LINQ-to-SQL 选择筛选子对象的父对象?如果我直接使用 T-SQL,那么这将是一个带有 where 子句的简单联接,但使用 LINQ-to-SQL 似乎要困难得多。
最佳答案
编辑 - 更新答案以返回 MemberShipGroup 对象
var query = (from mg in db.MembershipGroups
join m in db.Members.Where(mem => mem.Status == "Active")
on mg.ID equals m.MembershipGroups into members
select new
{
MembershipGroup = mg,
Members = members
}).AsEnumerable()
.Select(m => new MembershipGroup
{
ID = m.MembershipGroup.ID,
Title = m.MembershipGroup.Title,
Members = m.Members
});
关于c# - 使用 LINQ-to-SQL 返回已筛选子对象的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7232721/