我有以下LinQ表达式正常工作。但是,我想知道是否可以在不使用Lambda表达式和包含的情况下编写相同的查询。什么是另一种选择?由于 角色 是一种列表类型,我无法想出另一种方式。
var users = (from p in _db.People
where p.Roles.Select(r => r.RoleId).Contains(roleid)
select p).ToList();
更新1: 我的意思是:不使用Lambda,Contains,Select等。 但只使用select,join,from,where等。
答案 0 :(得分:1)
不是没有lambda表达式 - 这就是linq如何解决大部分繁重问题。
您可以使用.Any(...)
var users =
(
from p in _db.People
where p.Roles.Any(r => r.RoleId == roleid)
select p
).ToList();
答案 1 :(得分:1)
这应该生成你想要的连接......
var users =
(
from p in _db.People
from r in p.Roles
where r.RoleId == roleid
select p
).ToList();
编辑:如果您没有定义关系,请尝试此操作(未经测试)...
var query = (from p in db.people
join r in db.roles on p.roleID equals r.roleID
where r.roleID = roleID
select p).ToList();