使用不带Lambda表达式的LinQ来定义List类型属性的条件

时间:2015-02-25 02:10:52

标签: c# linq lambda

我有以下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等。

2 个答案:

答案 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();