对于“不在”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/