मैंने IQueryable प्रकार पर एक एक्सटेंशन विधि बनाई है, जो इकाइयों का एक सबसेट लेता है और कुछ आलोचकों पर उन्हें फ़िल्टर करता है। मेरी समस्या यह है कि मैं वैरिएबल से बना संघ अभिव्यक्ति वापस नहीं कर सकता, बिना सभी को पहले शुरू किया जा रहा है। शून्य मान, aprears के रूप में मान्य नहीं हैं।यूनियन अभिव्यक्ति का उपयोग करने से पहले, IQueryable चर को कैसे प्रारंभ करना चाहिए?
public static IQueryable<Person> FilterHairColors(this IQueryable<Person> subQuery, string[] hairColors)
{
IQueryable<Person> q1 = null;
IQueryable<Person> q2 = null;
IQueryable<Person> q3 = null;
IQueryable<Person> q4 = null;
foreach (var value in hairColors)
{
switch (value)
{
case "1":
q1 = subQuery.Where(p => p.HairColor_bright == true);
break;
case "2":
q2 = subQuery.Where(p => p.HairColor_brown == true);
break;
case "3":
q3 = subQuery.Where(p => p.HairColor_dark == true);
break;
case "4":
q4 = subQuery.Where(p => p.HairColor_red == true);
break;
}
}
return q1.AsQueryable().Union(q2.AsQueryable()).Union(q3.AsQueryable()).Union(q4.AsQueryable());
}
प्रस्तुत कोड ब्लॉक कई और अधिक का हिस्सा है, और प्रत्येक डेटा का एक उप पैदा करता है, बाद में एक छानने विधि करने के लिए इस तरह से अवगत करा दिया:
results = persons.FilterGender(vm.gender).FilterAge(vm.age).FilterHeight(vm.height)......
फिर मुझे शर्त कैसे यूनियन गैर नल चर के साथ प्रदर्शन करनी चाहिए? –
मैंने एक प्रस्ताव जोड़ा। – usr
धन्यवाद 'usr'। क्या आप मेरी समस्या तक पहुंचने के लिए अधिक सरल, सहज ज्ञान के बारे में सोच सकते हैं? –