如何使用Linq和IN子句

时间:2010-01-06 20:00:38

标签: linq

这是我的代码

if (catid != 0)
            posts = posts.Where(x => x.catid IN '1,8,2,109,23');

此代码中的 显示为语法错误。有没有办法解决这个问题

4 个答案:

答案 0 :(得分:8)

您还必须使用其他列表进行比较。

List<int> cadIdFoundList = new List<int>();

cadIdFoundList.Add(1);
cadIdFoundList.Add(8);
// etc. . . 

posts.Where(x => cadIdFoundList.Contains(x.catId));

答案 1 :(得分:5)

int[] ids = new int[] { 1, 8, 2, 109, 23 };
var query = posts.Where(x => ids.Contains(x.catid));

Rob Conery之前有discussed这个话题。

答案 2 :(得分:2)

甚至更简单:

var query = posts.Where(x => new[] { 1, 8, 2, 109, 23 }.Contains(x.catid));

答案 3 :(得分:1)

也许更像是:

HashSet<int> categories = new HashSet<int>() { 1, 2, 8, 23, 109};
posts = posts.Where(post => categories.Contains(post.catid));