2012-05-14 16 views
1

私はdatagridviewのデータベースから複数のレコードを表示しようとしていますが、常に1つのレコードしか持っていません。
2つのテーブルがこのクエリに含まれています。最初のテーブルからはすべてのIDが条件を満たすものを取得し、2番目のテーブルからはユーザー情報を取得しています。
最初のテーブルはtblUsers_Roles、2番目はtblUsersです。
これらのテーブルには、主要な/関連するキーの関係があります。エンティティフレームワークを使用しているdatagridviewのデータベースから複数の行を表示

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

答えて

2

あなたは、ループ内のグリッドを割り当てる:
はここに私のコードです。それはうまくいきません。たぶん、このような何かが動作します:

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

ない最初のものと同じくらい素敵:

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

それともalteretiveすることは、このようなものです。しかし、おそらくあなたはそのコンセプトを理解しています

+0

問題ありません。あなたがそれでうまくいけば、答えを受け入れることを忘れないでください:) – Arion

+0

私は:) 最初の解決策は美しいでした! –

+0

それは良いです。ありがとう – Arion