2010-05-22 113 views
0

我試圖做C#中的LINQ to SQL連接問題

using (UserManagementDataContext context = new UserManagementDataContext()) 
      { 
       var users = from u in context.Users 
          where u.UserEMailAdresses.EMailAddress == "[email protected]" 
          select u; 
       return users.Count(); 
      } 

然而,當我到達:

using (UserManagementDataContext context = new UserManagementDataContext()) 
      { 
       var users = from u in context.Users 
          where u.UserEMailAdresses. 

我沒有得到所提供的EMAILADDRESS名稱,而是一些中性的默認 - 在intelisense中查找選項列表。

我在做什麼錯?

表用戶

ID bigint 
NameTitle nvarchar(64) 
NameFirst nvarchar(64) 
NameMiddle nvarchar(64) 
NameLast nvarchar(64) 
NameSuffix nvarchar(64) 
Status bigint 
IsActive bit 

表UserEMailAddresses

ID bigint 
UserID bigint 
EMailAddress nvarchar(256) 
IsPrimary bit 
IsActive bit 

明顯,1個用戶可以有多個地址等Users.IDUserEMailAddresses.UserID它們之間的關係:1對多。

回答

2

UserEMailAdresses是電子郵件地址的集合,因此在它上面調用EMailAddress是沒有意義的。

你必須檢查是否有符合你正在尋找一個集合中的電子郵件地址:

var users = from u in context.Users 
      where u.UserEMailAdresses.Any(e => e.EMailAddress == "[email protected]") 
      select u; 
+0

日Thnx會嘗試。它確實比我想要的更有意義:)。我第一次使用linq(以下教程之外)。 – b0x0rz 2010-05-22 14:13:16

+0

是的,就像一個魅力。 thnx很多。 – b0x0rz 2010-05-22 14:17:28