LINQ查询C#ASP

LINQ查询C#ASP,c#,asp.net,sql,asp.net-mvc,linq,C#,Asp.net,Sql,Asp.net Mvc,Linq,在英语中,我试图:“返回一个团队列表中没有团队ID的人的列表 我在Person表和Team表之间有一个多对多关系,因此Person的每个实例都有一个他们所属的团队列表。(每个团队也有一个人员列表) 在这里,Person 2将有一个ID为1和2的两个团队对象的列表 我正在尝试编写一个查询,例如,如果TeamID为18,它将只返回Person1和Person3 这是我的尝试: var query = from p in db.People where( query2 = f

在英语中,我试图:“返回一个团队列表中没有团队ID的人的列表

我在Person表和Team表之间有一个多对多关系,因此Person的每个实例都有一个他们所属的团队列表。(每个团队也有一个人员列表)


在这里,Person 2将有一个ID为1和2的两个团队对象的列表

我正在尝试编写一个查询,例如,如果TeamID为18,它将只返回Person1和Person3

这是我的尝试:

var query = from p in db.People
            where( query2 = from t in p.Teams
                            where t.ID != teamID
                            select t)
            select p;

使用基于方法的LINQ语法,这将变成:

var query = db.People.Where(p => !p.Teams.Any(t => t.ID == 18));
适应您的代码:

var query =    
        from p in db.People
        where !(from t in db.Teams    
                select t.ID)    
               .Contains(p.ID)    
        select p;

这是一个糟糕的标题。请阅读抱歉,它有点泛化,我如何在标题中更具体一些?1)您的要求似乎与您提供的查询不同,或者它们不是很清楚2)您的嵌套查询正在选择“t”,但没有给出true或false(因为where子句旨在返回true或false)如果您觉得db.People.Where(p=>p.Teams.All(t=>t.ID!=18))更具可读性,您还可以使用
db.People.Where