C# 如何使用同一列中的多个where编写IQueryable?

C# 如何使用同一列中的多个where编写IQueryable?,c#,sql,sql-server,C#,Sql,Sql Server,我正在尝试将以下SQL查询转换为相应的IQueryable: select * from invoiceNum where IsActive = '1' and RoleCode in ('R0090', 'R0003', 'R0084', 'R0069', 'R0006', 'R0054') order by UserName 到目前为止,我已经得出以下结论: from u in this.Users where (u.IsActive == true) &&

我正在尝试将以下SQL查询转换为相应的
IQueryable

select * 
from invoiceNum 
where IsActive = '1' 
  and RoleCode in ('R0090', 'R0003', 'R0084', 'R0069', 'R0006', 'R0054')  
order by UserName
到目前为止,我已经得出以下结论:

from u in this.Users
where (u.IsActive == true)
&& u.RoleCode == "R0003"
orderby u.UserName

但是现在我被困在如何转换
WHERE
子句的其余部分上。如何转换作为其
WHERE
子句中的一部分的SQL查询,该查询具有多个必须满足
IQueryable
的条件?

使用
包含
for
in

注意:我不确定您的实体名称是否正确,但我想您会明白的

var roleCodes = new List<string>{"R0090","R0003","R0084","R0069","R0006","R0054"};

var users = Users.Where(x => x.IsActive && roleCodes.Contain(x.RoleCode))
                 .OrderBy(x => x.UserName)
                 .ToList();

// or

var user = from u in Users
           where u.IsActive && roleCodes.Contains(u.RoleCode)
           orderby u.UserName
           select u;
var roleCodes=新列表{“R0090”、“R0003”、“R0084”、“R0069”、“R0006”、“R0054”};
var users=users.Where(x=>x.IsActive&&roleCodes.Contain(x.RoleCode))
.OrderBy(x=>x.UserName)
.ToList();
//或
var user=来自用户中的u
其中u.I活动和&roleCodes.包含(u.RoleCode)
orderby u.UserName
选择u;

通过使用确定序列是否包含指定元素 默认的相等比较器