2012-03-26 176 views
0

我要創造這個瘋狂的查詢,並把它寫在LINQ語法查詢Linq中

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

我是新來的ASP MVC,所以請大家幫忙。

謝謝。

+0

這是很方便的開始霖q:http://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b – Silvermind 2012-03-26 16:04:22

+0

你的表結構是什麼樣的?你使用Linq to SQL或Entity Framework嗎? – Chris 2012-03-26 16:05:35

+0

我正在使用實體框架並使用存儲庫 – kbaccouche 2012-03-26 16:07:14

回答

1

首先,我會得到的查詢數據的「IN」的一部分......

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

然後我會做的主查詢,使用了「IN」的標準設定的參與者....

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

...和galacticCowboy指出,你可以用加入做這一切在一個查詢中,像這樣...

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

對於這個問題,SQL可以通過連接而不是相關子查詢來完成;這會自然饋入LINQ連接。 – GalacticCowboy 2012-03-26 16:28:29