我想在OR
查询中使用linq
函数。
例如:
SQL:
select * from tblusers where userid=1 and status='a' or status='b';
的LINQ:
var result= _Repository.selectAll().where(x=>x.UserID==1 && x.status=="a" OR x.status=="B");
它适用于linq
查询。那么有人有任何想法吗?
答案 0 :(得分:6)
因此,您了解&&
运算符以进行比较,那么为什么不尝试使用||
运算符?无论如何,这里是您的问题的解决方案,以下代码将为您提供结果,UserID为1,状态为a
或B
。
.where(x=>x.UserID==1 && (x.status=="a" || x.status=="B"));
答案 1 :(得分:3)
创建要检查的状态数组,然后使用contains。这样的事情。
var statusList = new[] {"a", "b"};
.Where(x=> x.UserID == 1 && statusList.Contains(x.status));
答案 2 :(得分:1)
在这里加上我的2美分,还有另一种方法可以在C#中编写sql查询,这或多或少类似于sql语法。
var result = from x in _Repository.SelectAll() where x.UserID == 1 && (x.Status == "a" || x.Status == "B") select x;
此语法为查询语法/表达式,其中您的代码段为方法语法/表达式。两者都将取得相同的结果。同样在场景后面,查询语法被编译为Method语法。
在编译时,查询表达式将根据C#规范中规定的规则转换为标准查询运算符方法调用。任何可以使用查询语法表达的查询也可以使用方法语法表示。但是,在大多数情况下,查询语法更具可读性和简洁性。
答案 3 :(得分:0)
或List.Contains
的其他方法,它生成像
SELECT * FROM tblusers WHERE userid=1 AND status IN ('a','b');
var acceptedStatus = new List<string> { 'a', 'b' };
var result= _Repository.selectAll()
.Where(x => x.UserID == 1)
.Where(x => acceptedStatus.Contains(x.Status));
请注意,您可以使用另一个&&
函数代替Where
运算符,并将它们链接起来。可以更加可读,然后在一行中适应所有条件。
答案 4 :(得分:0)
尝试代码:
var result =( from x in _Repository.selectAll()
where x.UserID==1 && (x.status=="a" || x.status=="B") select x);
另一种解决方案
var result =( from x in _Repository.selectAll().where(c=>c.status=="a" || x.status=="B")
where x.UserID==1 select x);