5

मैं सोच रहा हूं कि int की सरणी का उपयोग करके एक समेकित WHERE क्लॉज बनाने का कोई तरीका है या नहीं। मुझे पूरे सरणी के लिए परिणाम प्राप्त करने की आवश्यकता है।Concatenated जहां तारों की सरणी के साथ खंड

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 एस की सरणी के रूप में छोड़ दें और शून्य के लिए जांचें:

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)); 
} 
संबंधित मुद्दे