2012-03-26 12 views
0

Ich möchte diese verrückte Abfrage erstellen und schreiben Sie es in LINQ-SyntaxAbfragen in Linq

select ContaId 
    from Contact 
    where 
    ContaMail = "[email protected]" 
    and 
    ContaId in (
     select ContaId 
     from Participant 
     where 
     ParticipantId = "test") 

Ich bin neu in ASP MVC, so wenden Sie sich bitte helfen.

Danke.

+0

Dies tut praktisch beginnend mit lin sein kann q: http://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b – Silvermind

+0

Wie sieht Ihre Tabellenstruktur aus? Und verwenden Sie Linq zu SQL oder Entity Framework? – Chris

+0

Ich benutze Entity Framework und arbeite mit Repositorys – kbaccouche

Antwort

1

erstens würde ich die ‚IN‘ Teil der Abfrage Daten erhalten ...

 var participants = from p in participantsDataSource 
where p.ParticipantId == "test" 
    select p.ContaId; 

dann würde ich die Haupt-Abfrage tun, die Teilnehmer für die ‚IN‘ Kriterien verwenden ....

var contacts = from c in contactsDataSource where c.ContaMail == "[email protected]" 
&& participants.Contains(c.ContaId) 
select c.ContaId; 

... und wie Galactic darauf hinweist, könnte man sich alle in einer Abfrage mit einem Join, so ...

var contacts = from c in contactsDataSource 
     join p in participantsDataSource 
     on c.ContaId equals p.ContaId 
     where c.ContaMail == "[email protected]" 
     && p.participantId == "test" 
     select c.ContaId; 
+1

Für die Angelegenheit konnte die SQL mit einem Join statt einem korrelierten Subselect erreicht werden; Dies würde dann natürlich in einen LINQ-Join einfließen. – GalacticCowboy