C# Linq to SQL一对多查询数据绑定到Gridview

C# Linq to SQL一对多查询数据绑定到Gridview,c#,asp.net,linq-to-sql,C#,Asp.net,Linq To Sql,我有一个LTSQL查询,它从SQLServerDB返回所有用户和用户角色。 例如,一个用户可以有多个用户角色。因此,在返回的查询中,如果查看单个用户行,则每个用户角色都有EntitySet(UserRole) 返回所有关系数据的C#LTSQL查询非常简单 var results = from u in db.Users Select u; Gridview.DataSource = results; Gridview.Databind; 这将显示用

我有一个LTSQL查询,它从SQLServerDB返回所有用户和用户角色。 例如,一个用户可以有多个用户角色。因此,在返回的查询中,如果查看单个用户行,则每个用户角色都有EntitySet(UserRole)

返回所有关系数据的C#LTSQL查询非常简单

   var results = from u in db.Users
             Select u;

   Gridview.DataSource = results;
   Gridview.Databind;
这将显示用户表中的所有数据,但不显示userroles,userroles是查询结果中的一个实体

如果我想在单个gridView行上显示users表中的用户信息和所有userroles,那么最有效的方法是什么? gridView应该如下所示:

UserId |  UserName  |  UserRoles         | 
1      | John Smith |  Admin, Accountant | Edit
2      | Dave Jones |  Sales, Admin      | Edit
var results = from u in db.Users
             Select new {
                           UserID = u.UsrID,
                           UserName = u.UserName,
                           UserRoles = string.Join(", ", u.UserRoles.Select(r => r.Name))
                        };
大概是这样的:

UserId |  UserName  |  UserRoles         | 
1      | John Smith |  Admin, Accountant | Edit
2      | Dave Jones |  Sales, Admin      | Edit
var results = from u in db.Users
             Select new {
                           UserID = u.UsrID,
                           UserName = u.UserName,
                           UserRoles = string.Join(", ", u.UserRoles.Select(r => r.Name))
                        };