使用IEnumerable加入LINQ结果

时间:2013-10-21 14:26:50

标签: c# linq entity-framework-4 asp.net-web-api

我使用Entity Framework在.NET 4.5中编写了一个API。以下是其中一种方法:

private myEntities db = new myEntities();

// GET api/User
public IEnumerable<User> GetUsers()
{
    return from u in db.Users
           select u;
}

非常简单。此表可以与Roles表连接,因此用户可以拥有多个角色。外键UserId位于Roles表中。这就是我想要做的事情:

private myEntities db = new myEntities();

// GET api/User
public IEnumerable<User> GetUsers()
{
    return from u in db.Users
           join r in db.Roles on u.UserId equals r.UserId
           select new User
           {
               UserId = u.UserId,
               Roles = u.Roles
           };
}

这会抛出错误:无法在LINQ to Entities查询中构造实体或复杂类型“ppadModel.User”

如何编写返回用户的查询以及与该用户关联的所有角色?

1 个答案:

答案 0 :(得分:0)

您使用.Include扩展方法。

像这样:

return from u in db.Users.Include("Roles")
select u;

您也可以使用lamba表达式来避免字符串:

return from u in db.Users.Include(x => x.Roles)
select u;

这告诉实体框架为用户加载所有用户和其他所有相关角色。