2010-05-30 23 views
2

我有三個表:LINQ選擇M:N的用戶:組

cp_user (id, name) 
cp_group (id, name) 
cp_usergroup (user_id, group_id) 
  • 經典的M:N的東西。

假設以下數據:

cp_user 
1, Paul 
2, Steven 

cp_group 
1, Admin 
2, Editor 

cp_usergroup 
1, 1 
1, 2 
2, 2 

於是保羅是管理和編輯組,而史蒂芬只是在編輯器組。我想從數據庫生成一個類似的列表:

Paul Admin 
Paul Editor 
Steven Editor 

有什麼建議嗎?

謝謝! 克萊門斯

回答

2

我的一個朋友剛剛幫了我這個:

var q = db2.cp_users.SelectMany(
      u => u.cp_groups.Select(
       g => new { Username = u.name, Groupname = g.name })); 

工作正常,我。有沒有辦法在查詢語法中做到這一點?

1

在查詢語法:

from u in db2.cp_users 
from g in u.cp_groups 
select new { Username = u.name, GroupName = g.name } 
+0

嗯,抱歉地說,但這返回 保羅管理員 史蒂芬聯繫 保羅編輯 史蒂芬編輯 看來表只是交叉連接。 – blacktarmac 2010-06-01 05:43:03

+0

你是說第一個解決方案(流利的語法)返回你想要的結果,但查詢表達式不? – 2010-06-02 07:35:20