5

int 배열을 사용하여 연결된 WHERE 절을 만드는 방법이 있는지 궁금합니다. 나는 전체 배열을 결합한 결과를 얻을 필요가있다. 당신은이 작업을 수행 할 수문자열의 배열을 가진 병합 된 Where 절

public ViewResult Results(int? programId, int? programYear, int? programTypeId, string toDate, string fromDate, int?[] programTypeIdList, int?[] programIdList) 
{ 
    surveyResponseRepository.Get().Any(x => x.ProgramId == programIdList); 
} 

답변

4

사용 Contains : 나는 같은 것을 할 수

surveyResponseRepository.Get().Any(x => programIdList.Contains(x.ProgramId)); 

를 어떤 결과가 기준에 있음을 충족하는 경우 그 당신을 말할 것이다지만.

난 당신이 Any 대신 Where을 사용하려는 생각 :

또한
surveyResponseRepository.Get().Where(x => programIdList.Contains(x.ProgramId)); 

, 왜이 널 int의 배열을 사용하고 있습니까? 매개 변수를 선택적으로 설정하려는 경우 일반 배열 int의 배열로두고 null을 확인하십시오. null :

public ViewResult Results(int? programId, int? programYear, int? programTypeId, string toDate, string fromDate, int[] programTypeIdList, int[] programIdList) 
{ 
    return surveyResponseRepository.Get() 
     .Where(x => programIdList == NULL 
        || programIdList.Contains(x.ProgramId)); 

} 
1

:

public ViewResult Results(int? programId, int? programYear, int? programTypeId, string toDate, string fromDate, int?[] programTypeIdList, int?[] programIdList) 
{ 
    surveyResponseRepository.Get().Where(x => programIdList.HasValue && programIdList.Value.Contains(x.ProgramId)); 
}