【问题标题】:LINQ Query C# ASPLINQ 查询 C# ASP
【发布时间】:2013-06-11 00:24:06
【问题描述】:

在英语中,我试图:“返回在他们的团队列表中没有 TeamID 的人员列表

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

这里的 Person 2 会有一个包含两个 ID 分别为 1 和 2 的 Team 对象的列表

我正在尝试编写一个查询,例如,如果 TeamID 为 18,它将仅返回人 1 和 3

这是我的尝试:

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

【问题讨论】:

  • 这是一个糟糕的标题。请阅读meta.stackexchange.com/questions/10647/…
  • 对不起,这有点笼统,我怎么能在标题中更具体?
  • 1) 您的要求似乎与您提供的查询不同,或者它们不是很清楚 2) 您的嵌套查询选择了“t”但没有给出 true 或 false(因为 where 子句的意思是返回真或假)

标签: c# asp.net sql asp.net-mvc linq


【解决方案1】:

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

var query = db.People.Where(p => !p.Teams.Any(t => t.ID == 18));

【讨论】:

  • 你也可以使用db.People.Where(p => p.Teams.All(t => t.ID != 18)),如果你觉得这样更易读。
【解决方案2】:

适应您的代码:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-27
    • 2019-06-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多