select Productid from categories where `categoryname` in `('abc','def','ghi')`;
Run Code Online (Sandbox Code Playgroud)
我试过这个:
var res = from catg in db.Categories where catg.CategoryId.ToString().Contains(SelectedProducts) select catg;
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用......
假设SelectedProducts是一个产品ID数组(整数):
var cats = db.Categories.Where(o => SelectedProducts.Contains(o.CategoryId));
var pids = cats.Select(o => o.ProductId);
Run Code Online (Sandbox Code Playgroud)
原因:SQL IN运算符LINQ与SQL 相反实现.这个问题突出了LINQ开发人员试图从SQL翻译的一个常见错误,期望一种[attribute] [operator] [set]语法.
使用抽象集语言,我们可以突出显示语法差异
is includedin Set"语法containsElement"语法因此IN必须使用Contains运算符恢复任何子句.它会转化为attribute IN (SET)无论如何.