2010-05-22 111 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