Sql 在LINQ中包含带有where子句的对象

Sql 在LINQ中包含带有where子句的对象,sql,linq,.net-core,Sql,Linq,.net Core,我想要一个LINQ查询,该查询应该返回所有具有VitalSigns的成员,其中生命体征中的事件等于手术 我的Member.cs课程: public class Member { public int Id { get; set; } public string FullName { get; set; } public ICollection<VitalSign> VitalSigns { get; set; } public Member()

我想要一个LINQ查询,该查询应该返回所有具有VitalSigns的成员,其中生命体征中的事件等于手术

我的
Member.cs
课程:

public class Member
{
    public int Id { get; set; }
    public string FullName { get; set; }
    public ICollection<VitalSign> VitalSigns { get; set; }

    public Member()
    {
         VitalSigns = new Collection<VitalSign>();
    }
}
我编写的LINQ查询是:

 return await context. Members.Include(c => c.VitalSigns.Where(t => t.Event == "post surgery")).ToListAsync();
这将返回一个自引用循环。因为
VitalSigns
中有一些数据,事件不等于“术后”。我写的查询错了吗?

查询应该是:

context.Members.Where(t => t.VitalSigns.Any(u => u.Event == "post surgery"))
    .Include(c => c.VitalSigns)
    .ToListAsync()
Include()
只是在执行查询时应加载哪些表的提示

查询类似于:

all the members WHERE there is ANY (at least) one VitalSign with Event == post surgery
together with the Members you'll get, please INCLUDE the VitalSigns (the alternative is that they'll be lazily loaded when you try to access them)
return a List<> (ToListAsync) of the elements in an asynchronous way
存在任何(至少)一个VitalSign且事件==术后的所有成员
与您将获得的成员一起,请包括VitalSigns(另一种选择是,当您尝试访问它们时,它们将被延迟加载)
以异步方式返回元素列表(ToListSync)
查询应为:

context.Members.Where(t => t.VitalSigns.Any(u => u.Event == "post surgery"))
    .Include(c => c.VitalSigns)
    .ToListAsync()
Include()
只是在执行查询时应加载哪些表的提示

查询类似于:

all the members WHERE there is ANY (at least) one VitalSign with Event == post surgery
together with the Members you'll get, please INCLUDE the VitalSigns (the alternative is that they'll be lazily loaded when you try to access them)
return a List<> (ToListAsync) of the elements in an asynchronous way
存在任何(至少)一个VitalSign且事件==术后的所有成员
与您将获得的成员一起,请包括VitalSigns(另一种选择是,当您尝试访问它们时,它们将被延迟加载)
以异步方式返回元素列表(ToListSync)

@RyanWilson问题不在于顺序(
Where
Include
之前或之后),问题在于
Where
Include
应该在查询中处于同一级别,因此
Include
之外的
Where
感谢xanatos的解释。谢谢你。我仍在使用SQLClient和存储过程等进行数据库工作。因此,我不太熟悉EntityFramework的Linq语法。@xanatos如果它们处于同一级别,则我无法获取事件。@gogo,因为您必须使用内部
Any
。。。看我的response@RyanWilson问题不在于顺序(
Where
Include
之前或之后),问题在于
Where
Include
应该在查询中处于同一级别,因此
Where
Include
@xanatos之外的
Include
感谢您的解释。谢谢你。我仍在使用SQLClient和存储过程等进行数据库工作。因此,我不太熟悉EntityFramework的Linq语法。@xanatos如果它们处于同一级别,则我无法获取事件。@gogo,因为您必须使用内部
Any
。。。请参阅我的responseGood解释,并感谢您将其从LLAMDAS分解为普通linq语法+1.这个查询返回所有生命体征,无论事件是否等于“术后”@GoGo它返回所有成员,其中至少有一个生命体征等于术后。其他生命体征也包括在内。嗯,目前无法筛选加载了哪些相关实体。Include将始终引入所有相关实体。这不太好。很好的解释,谢谢你将它从LLAMDAS分解为简单的linq语法+1.这个查询返回所有生命体征,无论事件是否等于“术后”@GoGo它返回所有成员,其中至少有一个生命体征等于术后。其他生命体征也包括在内。嗯,目前无法筛选加载了哪些相关实体。Include将始终引入所有相关实体。那不好。