LINQ to SQL是否支持T-SQL中的"in"语句?

3

我不知道如何更好地描述标题(所以可以随意更改),但我想在LINQ to SQL中生成以下语句的等效语句:

select * from products where category in ('shoes','boots')

这些字段实质上将来自查询字符串(更安全的方式略有不同,但为了方便解释而采用此方法),例如:

string[] myfields = request.querystring["categories"].split(',');

谢谢

3个回答

15

是的,你可以使用 Contains

db.Products.Where(product => myFields.Contains(product.Category))

也叫

from product in db.Products
where myFields.Contains(product.Category)
select product

1

正如其他人所提到的,它确实使用.Contains方法。为了让可能通过Bing(或任何其他搜索引擎)到达此处的其他随机人受益:Linq-To-Entities在当前版本中不支持.Contains方法。但是,通过一个简单的扩展方法,您可以这样做:
http://george.tsiokos.com/posts/2007/11/30/linq-where-x-in/


0

理论上你会使用 contains:

var productList = from product in context.Products
    where myfields.contains(product.category)
    select product

不过您需要进行测试 - 我记得在处理类似这样的 List<> 和数组值时,Linq2Sql 优化器存在一个错误(如果您尝试将它们转换为 IQueryable,则可能仅出现此问题)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接