2012-10-17 80 views
1

我有一個ProgramIDs數組,並且想要根據有多少個ProgramIds動態地創建一些Select語句。基於ID數組選擇幾個對象

例如:

var surveyProgramVar = surveyProgramRepository.Find().Where(x => x.ProgramId == resultsviewmodel.ProgramIds.FirstOrDefault()); 

這是()選擇語句與單個ProgramId.FirstOrDefault工作的一個例子。如何創建SurveyProgramVars的列表/數組併爲數組中的每個ProgramIds選擇?

回答

0

這不會是一定是最佳的,但你可以嘗試:

var surveyProgramVar = surveyProgramRepository.Find() 
         .Where(x => resultsviewmodel.ProgramIds.Contains(x.ProgramId)); 
0

你可以嘗試這樣的:

var surveyProgramVar = surveyProgramRepository.Find().Where(x => resultsviewmodel.ProgramIds.Contains(x.ProgramId)); 

提示:如果Find()方法做一擊上數據庫,如果您在查詢中創建了一個特定的方法來對IN進行統計,那將會很不錯。如果你不這樣做,它會將所有記錄都放在一張表上,並將其過濾到內存中(linq到對象),但這種方法不太好。您的代碼可能類似於:

var surveyProgramVar = surveyProgramRepository.FindByProgramsId(resultsviewmodel.ProgramIds);