如何在一列中搜索具有许多参数的LINQ?

时间:2010-10-06 08:26:12

标签: linq-to-sql

例如有这个表:

Name | BodyType
----------------
John  | 1
Ted   | 2
Daniel| 3
George| 4

我的应用程序我检查“1”“2”和“3”复选框。我应该找到3行(约翰,泰德,丹尼尔)和非乔治。如何在LINQ中获取此查询? (不使用where p.BodyType!=4) 使用逻辑 OR

var all = dataContext.Users;
foreach (searchParameter in search)
  ...?

2 个答案:

答案 0 :(得分:4)

将所需的ID放入List<int>,然后Contains

var bodyTypes = GetBodyTypesFromSearchParameters();
var query = dataContext.Users.Where(user => bodyTypes.Contains(user.BodyType));

答案 1 :(得分:1)

基本上,您需要将参数放入Enumerable容器中,然后在使用Where方法迭代表时使用LINQ的Contains方法:

    var parameters = new[] { 1, 2, 3};
    var list = new[] { new { Name = "John", BodyType = 1 }, new { Name = "Ted", BodyType = 2 }, new { Name = "Daniel", BodyType = 3 }, new { Name = "George", BodyType = 4 } };
    var result = list.Where(c => parameters.Contains(c.BodyType));