【问题标题】:IQueryable syntax for SQL not in clause [duplicate]SQL not in 子句的 IQueryable 语法 [重复]
【发布时间】:2016-05-13 13:37:49
【问题描述】:

构建我的第一个 ASP.NET 应用程序,并有一个管理页面用于从关键表中添加或删除项目。这工作正常,但我想在删除功能的选择中添加一个过滤器,以便无法删除数据库中使用的项目。

一个例子是两个表 1. ItemBank, 2. Questions。 ItemBank 有 PK 并且 Questions 是 FK,目前我有一个从 ItemBank 表中检索 ItemBank 项目的查询,但我想像下面的 SQL 语句一样过滤它:

Select * 
from ItemBank 
where BankID not in (Select BankID from Questions);

我将如何修改以下查询来做到这一点?

public IQueryable GetItemBank()
{
    var _db = new cs1.Models.ProductContext();
    IQueryable query = _db.ItemBank;
    return query;
}

【问题讨论】:

  • 您生成的 ItemBank 类是否有 Questions 属性?所以你可以做类似_db.ItemBank.Where(x => !x.Questions.Any()) 的事情?
  • Chips_100 不确定我理解您的要求(asp.net 的新内容)ItemBank 是它自己的表和类,问题也是如此。我目前没有任何东西将它们连接在一起。

标签: c# asp.net asp.net-web-api


【解决方案1】:

如果你正确设置了外键,你就可以_db.ItemBank.Where(i=>!i.Questions.Any())

【讨论】:

  • 绝对是的,很好的答案!
  • 我已经分配了主键,但是在分配类时我能找到的所有用于分配外键的文章都是针对旧版本的,并且似乎不起作用。如何分配外键?
  • 在外键示例中,代码末尾的“Any”不被接受?
猜你喜欢
  • 2017-08-10
  • 2011-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-10
相关资源
最近更新 更多