2010-05-22 7 views
0

je suis en train de faireC# LINQ to SQL JOIN problème

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

cependant, quand je reçois à:

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

je ne suis pas offert le nom EMAILADDRESS, mais plutôt un défaut- neutre recherche liste d'options dans intelisense.

qu'est-ce que je fais mal?

Utilisateurs de table

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

Table de UserEMailAddresses

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

évidemment, 1 utilisateur peut avoir de nombreuses adresses et ainsi Users.ID et UserEMailAddresses.UserID ont une relation entre eux: 1 à NOMBREUX.

Répondre

2

UserEMailAdresses est une collection d'adresses e-mail, il n'est donc pas logique d'appeler EMailAddress dessus.

Vous devez vérifier s'il y a une adresse e-mail dans la collection qui correspond à celui que vous cherchez:

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

thnx va essayer. ça a plus de sens :) que ce que j'essayais. mon premier vrai usage de linq (en dehors des tutoriels suivants). – b0x0rz

+0

yep fonctionne comme un charme. beaucoup. – b0x0rz