如何在同一列中的多个位置编写IQueryable?

时间:2018-08-07 02:58:38

标签: 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)
&& u.RoleCode == "R0003"
orderby u.UserName

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

1 个答案:

答案 0 :(得分:2)

Contains用于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;

Enumerable.Contains Method (IEnumerable, TSource)

  

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