2011-12-22 70 views
0

我想填充我的WebGrid從LINQ到SQL。在LINQ中選擇特定列作爲特定名稱?

它有以下欄目: 用戶名 電子郵件 名 姓 IsApproved IsLockedOut IsOnline LastActivityDate LastLoginDate CreationDate

所有這一切都來自於用戶對象: dbc.Users

但是除了名字和姓氏之外的所有內容都是來自aspnet_Membershi的關聯p和aspnet_User,這是在我的LINQ to SQL中定義的。我如何將這些設置爲正確的列名?

我想:

var accounts = dbc.Users.Select(User => new User 
{ 
     Username => aspnet_Membership.username 
}).ToList(); 

對於用戶名,但它無法正常工作。

我該怎麼做?

+0

你能解釋一下這個好一點嗎? – 2011-12-22 18:26:36

回答

2

這將是:

var accounts = dbc.Users.Select(User => new User 
{ 
     Username = aspnet_Membership.username 
}).ToList(); 

否=>財產分配,但假設這是不是這樣,你需要的是「扁平化」的多個對象之間的結果集,一個辦法來解決有一個具有多個表的實體是通過使用匿名類來管理這樣的:

var accounts = from u dbc.Users 
       let m = dbc.aspnet_Memberships.First(i => i.ProviderUserKey == u.UserKey) 
       select new 
    { 
      Username = m.username, 
      FirstName = u.FirstName 
    }).ToList(); 

或者定義視圖,並添加到您的模型。這是擁有共同實體的另一種方式。