有人可以帮帮我吗?我想要一个简单的“在哪里”。这是执行我想要的SQL。
select ur.RoleID
from UserRoles ur
where ur.RoleID in (5, 15)
这是我的尝试。方法.IN()显然不存在,只是把我的凝聚思想lol。
int roleid;
foreach (data r in dataList) {
using (DataContext communityContext = new DataContext()) {
roleid = communityContext.UserRoles
.Where(x => x.UserID == r.ClientId && x.RoleID.IN(5, 15))
.Select(x => x.RoleID)
.First();
}
}
答案 0 :(得分:8)
如你所说In
不存在,如果你有一个列表,请改为.Contains()
,在你的情况下,你也可以使用x.RoleId == 5 || x.RoleId == 15
e.g。
var allowedRoles = new int[] { 5, 15 };
然后在你的where
子句中执行:
allowedRoles.Contains(x.RoleID)
答案 1 :(得分:1)
var setNumbers = new List<int>() { 5, 15};
communityContext.UserRoles.Where(x => x.UserID == r.ClientId)
.Where(x => setNumbers.Contains( x.RoleID ) )
...
HTH
答案 2 :(得分:0)
我会把它重写为......
int roleid;
var allowedRoles = new[] {5, 15};
foreach (data r in dataList) {
using (DataContext communityContext = new DataContext()) {
roleid = communityContext.UserRoles
.First(x=> x.UserID == r.ClientId && allowedRoles.Contains(x.RoleID))
.RoleID;
}
}
另外,我不确定你为什么要在循环中创建datacontext。这看起来很浪费,因为datacontext不依赖于datalist。