【问题标题】:showing multiple rows from database in datagridview using entity framework使用实体框架在datagridview中显示数据库中的多行
【发布时间】:2012-05-14 07:30:34
【问题描述】:

我试图在 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();
}

【问题讨论】:

    标签: visual-studio-2010 sql-server-2008 entity-framework-4


    【解决方案1】:

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

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

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

    【讨论】:

    • 没问题。如果你没问题,记得接受答案:)
    • 我会的:)顺便说一句,第一个解决方案很漂亮!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多