5

Me pregunto si existe una forma de crear una cláusula WHERE concatenada usando una matriz de int. Necesito obtener los resultados para todo el conjunto combinado. ¿Puedo hacer algo como:Concatenó la cláusula where con una matriz de cadenas

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

Respuesta

4

Uso Contains:

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

pesar de que le dirá si algún resultado cumple con ese criterio.

sospecho que desea utilizar en lugar de WhereAny:

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

Además, ¿está usted utilizando una matriz de anulables int s? Si está intentando hacer que el parámetro sea opcional, simplemente déjelo como una matriz de int y compruebe 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

Usted puede hacer esto:

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)); 
}