1

datagridviewでデータベースの複数のレコードを表示しようとしていますが、常に1つのレコードしかありません。
このクエリには2つのテーブルが含まれます。最初のテーブルから、条件を満たすすべてのIDを取得し、2番目のテーブルからユーザー情報を取得します。
1番目のテーブルはtblUsers_Rolesで、2番目のテーブルは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 に答える