c# - Entity Framework 4.1 的 SQL "not in"语法

标签 c# sql asp.net-mvc-3 entity-framework-4.1

对于“不在”SQL 等价物的 Entity Framework 语法,我有一个简单的问题。本质上,我想将以下 SQL 语法转换为 Entity Framework 语法:

select  ID
from    dbo.List
where   ID not in (list of IDs)

这是我用来查找单个记录的方法:

public static List GetLists(int id)
{
    using (dbInstance db = new dbInstance())
    {
        return db.Lists.Where(m => m.ID == id);
    }
}

这是我想为此使用的伪方法:

public static List<List> GetLists(List<int> listIDs)
{
    using (dbInstance db = new dbInstance())
    {
        return db.Lists.Where(**** What Goes Here ****).ToList();
    }
}

任何人都可以指点一下 Where 子句区域中的内容吗?我阅读了一些关于此的论坛,并看到提到使用 .Contains().Any(),但这些示例都不够合适。

最佳答案

试一试...

public static List<List> GetLists(List<int> listIDs)
{
    using (dbInstance db = new dbInstance())
    {
        // Use this one to return List where IS NOT IN the provided listIDs
        return db.Lists.Where(x => !listIDs.Contains(x.ID)).ToList();

        // Or use this one to return List where IS IN the provided listIDs
        return db.Lists.Where(x => listIDs.Contains(x.ID)).ToList();
    }
}

这些将变成大约以下数据库查询:

SELECT [Extent1].*
FROM [dbo].[List] AS [Extent1]
WHERE  NOT ([Extent1].[ID] IN (<your,list,of,ids>))

SELECT [Extent1].*
FROM [dbo].[List] AS [Extent1]
WHERE  [Extent1].[ID] IN (<your,list,of,ids>)

分别。

关于c# - Entity Framework 4.1 的 SQL "not in"语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7182387/

相关文章:

c# - AUTOINCREMENT 不适用于 OleDbCommand

Mysql 表之间的关系 - 决定因素

asp.net - 测试ControllerFactory(启动前初始化阶段)

c# - ASP MVC3 - 将选项标记为选中

c# - 如何在 ASP.NET MVC3 中通过 HTTPS 提供静态文件(在 ~/Content 中)

c# - 在 C# 项目中使用 C++ DLL

c# - 我可以使用反射取消订阅系统事件吗?

c# - 将 SqlDataReader 传递为用作转换的参数

sql - PostgreSQL 将 varchar 列表示为 bool 值

MySQL查询基于另一个查询的结果