मैं डॉट नोटेशन यहाँ का प्रयोग करेंगे:
var query = questions.Where(q => !q.IsDeleted);
if (catId != 0)
{
query = query.Where(q => cats.Contains(q.CatID));
}
if (authorId != 0)
{
query = query.Where(q => q.OwnerId == authorId);
}
आप थोड़ा और अधिक बस यह करने के लिए अपने खुद के विस्तार विधि लिख सकते हैं:
public static IQueryable<T> OptionalWhere<T>(
this IQueryable<T> source,
bool condition,
Expression<Func<T,bool>> predicate)
{
return condition ? source.Where(predicate) : source;
}
फिर आप लिख सकते हैं:
var query = questions.Where(q => !q.IsDeleted);
.OptionalWhere(catId != 0, q => cats.Contains(q.CatID))
.OptionalWhere(authorId != 0, q => q.OwnerId == authorId);
स्रोत
2009-09-18 08:27:29
जॉन, वैकल्पिक विकल्प एक्सटेंशन विधि से प्यार करें। पूरी तरह से कमाल :)/मुझे चोरी है कि प्लैटिनम nugget ... –
हे कुछ भयानक कोड है ... अच्छा – user161433