2011-03-23 22 views
0

我創建了兩個實體,它們具有導航屬性。來自兩個實體的訪問屬性

var list = from u in storeDB.Users 
      join a in storeDB.Accounts 
      on u.Id equals a.Id 
      select new { u, a }; 

,如果我做了

foreach(user in list){ 
    <span>user.Name, user.Money</span> 
} 

它不工作。我的問題是如何顯示兩個表的結果屬性的內容,即連接的內容?

Users: has Name, Id 
Accounts: has Id, Money 

回答

0

我懷疑你是在MVC視圖,所以你需要創建一個視圖模型爲合併後的用戶和客戶對象,並在模型送它可枚舉用這個。

public class UserAccountVM{ 
    public Account Acct { get; set; } 
    public User Usr { get; set; } 
} 

然後在查詢做到這一點:

var list = from u in storeDB.Users    
      join a in storeDB.Accounts    
      on u.Id equals a.Id    
      select new UserAccountVM { Usr = u, Acct = a }; 

傳遞列表作爲你的模型。你的觀點應該是強類型的; IEnumerable<UserAccountVM>應該工作。然後做這在您的視圖:

foreach(user in list){ 
    <span>user.Usr.Name, user.Acct.Money</span> 
} 
0

匿名對象上的屬性是ua因爲你已經將它們命名爲。你可能想給他們更好的名字,或者更好的是,簡單地選擇你感興趣的屬性。我會給他們明確的名字,但是你可以省略,如果你想要的名字與屬性名稱相同,沒有任何衝突。

var list = from u in storeDB.Users 
      join a in storeDB.Accounts 
      on u.Id equals a.Id 
      select new { Name = u.Name, Money = a.Money }; 

然後把它們作爲

​​
+0

我以前試過,但它標誌着一個服務器錯誤「對象」不包含「名稱」 – bb2 2011-03-23 21:44:44

+0

@ BB2的定義 - 這是MVC(2或3)?或網頁表單?如果MVC模型的類型是什麼?如果你使用的是MVC2,你可能需要一個強類型視圖和一個視圖特定的模型,該模型具有你想要的視圖屬性。而不是選擇一個匿名對象,選擇特定於視圖的模型,並設置您的用戶/帳戶對象的屬性。 – tvanfosson 2011-03-23 23:11:48

+0

ASP MVC 3,是的,我剛剛讀到這個。我必須創建一個ViewModel,謝謝! – bb2 2011-03-24 05:49:19

0

嘗試including the related objects

例如

var list = storeDB.Users.Include("Accounts"); 
+0

這帶來了我昨天發佈的其他問題:http://stackoverflow.com/questions/5396648/how-does-include-work?tab=active#tab-top由於這個問題,我正在手動進行加入... =( – bb2 2011-03-23 21:48:34