例如有这个表:
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)
...?
答案 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));