1

我试图在 datagridview 中显示来自数据库的多条记录,但我一直只有一条记录。
此查询涉及 2 个表,从第一个表我获取所有满足条件的 id,从第二个表我获取用户信息。
第一个表是 tblUsers_Roles,第二个表是 tblUsers。
这些表具有主/外键关系。
这是我的代码:

IEnumerable<tblUsers_Role> id = db.tblUsers_Role.Where(a => a.User_Role == selectRole);

foreach (var user in id)
{
    var userinfo = from b in db.tblUsers 
                   where b.User_Id == user.User_Id 
                   select new { b.First_Name, b.Last_Name, b.Status, b.Authenticated };

    dgvResults.DataSource = userinfo.ToList();
    dgvResults.Show();
}
4

1 回答 1

2

您正在循环中分配网格。那是行不通的。也许这样的事情会起作用:

var userinfo =(from ur in db.tblUsers_Role
    join u in db.tblUsers
        on ur.User_Id equals u.User_Id 
    where ur.User_Role == selectRole
    select new
    {
        u.First_Name, 
        u.Last_Name, 
        u.Status, 
        u.Authenticated
    }).ToList();

dgvResults.DataSource = userinfo;
dgvResults.Show();

或者一个替代方案是这样的:

 var roles=db.tblUsers_Role
             .Where(a => a.User_Role == selectRole)
             .Select (a =>a.User_Id).ToList();

var userinfo=
    (
        from u in db.tblUsers
        where roles.Contains(u.User_Id)
        select new
        {
            u.First_Name, 
            u.Last_Name, 
            u.Status, 
            u.Authenticated
        }
    ).ToList();

dgvResults.DataSource = userinfo;
dgvResults.Show();

不如第一个好看。但也许你理解这个概念。

于 2012-05-14T07:38:06.060 回答