2012-03-02 115 views
0

我有這個疑問:翻譯SQL查詢的DbContext查詢與過濾子查詢

SELECT * FROM ScheduleGroups A 
INNER JOIN ScheduleGroupResources B ON A.ScheduleGroupId=B.ScheduleGroupId 
WHERE B.ScheduleGroupId IN (SELECT ScheduleGroupId 
          FROM ScheduleGroupResources 
          WHERE ScheduleResourceId=2) 

我想的DbContext查詢代表。

目前這樣的:

return actualContext.ScheduleGroups 
        .Include(a => a.ScheduleGroupResources).ToList(); 

這給我帶來的所有結果。我只想按照'where'中的顯示進行過濾。

非常感謝你的一切!

編輯:

我找到了解決辦法:

return actualContext.ScheduleGroups 
        .Include(a => a.ScheduleGroupResources) 
        .Where(a => a.ScheduleGroupResources.Any(b => b.ScheduleResourceId == scheduleResourceId)).ToList(); 

回答

0

僅供參考,原有的查詢可以寫成:

SELECT * 
FROM ScheduleGroups A 
INNER JOIN ScheduleGroupResources B ON A.ScheduleGroupId=B.ScheduleGroupId 
WHERE ScheduleResourceId=2 
+0

也許我忘了說,關係是1太多。 沒有相同的結果。您的查詢僅返回ScheduleGroupResources,其中ScheduleResourceId = 2 我的查詢返回ScheduleGroups中包含的所有ScheduleGroupResources,其中ScheduleResourceId = 2 無論如何,謝謝! – JoseMancebo 2012-03-02 13:51:35