2011-12-02 73 views
1

我不知道如何在LINQ中使用嵌套選擇。 我怎樣才能將這個SQl表達式轉換爲LINQ?LINQ表達式中的嵌套選擇,如何?

Select i.ID, i.Impression, 
(Select COUNT(ImpressionsId) 
    from DiaryImpressions 
    where DiaryPostsId = '2' AND ImpressionsId = i.ID) as Num from Impressions i 
+0

這樣的事情讓我尋找更好的解決方案。加入linq只會讓你哭...你可以考慮看看這個簡單但奇妙的工具(小巧)http://code.google.com/p/dapper-dot-net/ –

+0

我相信這也可以改寫爲加入一個等效的RA模型。這些計劃雖然可能有點不同。 – 2011-12-02 20:30:10

回答

0
from ... 
select new { 
    i.Id, 
    i.Impression, 
    Count = context.DiaryImpressions.Count(d => d.DiaryPostsId == 2 && d.ImpressionsId == i.Id) 
} 

如果正確映射你的對象,就可以直接使用子女的關係:

Count = i.DiaryImpressions.Count(d => d.DiaryPostsId == 2) 
+0

謝謝你的回答Slaks –

2

真的嗎? DiaryPostsId是一個字符串?哦,好吧...

from i in context.Impressions 
select new { 
    i.ID, 
    i.Impressions, 
    Num = (from d in context.DiaryImpressions 
      where d.DiaryPostsId == "2" 
      && d.ImpressionsId == i.ID 
      select d).Count() 
}