我不知道如何更好地描述标题(所以可以随意更改),但我想在LINQ to SQL中生成以下语句的等效语句:
select * from products where category in ('shoes','boots')
这些字段实质上将来自查询字符串(更安全的方式略有不同,但为了方便解释而采用此方法),例如:
string[] myfields = request.querystring["categories"].split(',');
谢谢
我不知道如何更好地描述标题(所以可以随意更改),但我想在LINQ to SQL中生成以下语句的等效语句:
select * from products where category in ('shoes','boots')
这些字段实质上将来自查询字符串(更安全的方式略有不同,但为了方便解释而采用此方法),例如:
string[] myfields = request.querystring["categories"].split(',');
谢谢
是的,你可以使用 Contains
:
db.Products.Where(product => myFields.Contains(product.Category))
也叫
from product in db.Products
where myFields.Contains(product.Category)
select product
正如其他人所提到的,它确实使用.Contains方法。为了让可能通过Bing(或任何其他搜索引擎)到达此处的其他随机人受益:Linq-To-Entities在当前版本中不支持.Contains方法。但是,通过一个简单的扩展方法,您可以这样做:
http://george.tsiokos.com/posts/2007/11/30/linq-where-x-in/
理论上你会使用 contains:
var productList = from product in context.Products
where myfields.contains(product.category)
select product
不过您需要进行测试 - 我记得在处理类似这样的 List<> 和数组值时,Linq2Sql 优化器存在一个错误(如果您尝试将它们转换为 IQueryable,则可能仅出现此问题)