कहना चलो मैं निर्णय लेने से कुछ तार "मैच", इस तरह है कि क्या की एक विशेष तरीका है:LINQ से इकाइयों और सहायक तरीकों का उपयोग करते समय DRY कैसे रहें?
public bool stringsMatch(string searchFor, string searchIn)
{
if (string.IsNullOrEmpty(searchFor))
{
return true;
}
return searchIn != null &&
(searchIn.Trim().ToLower().StartsWith(searchFor.Trim().ToLower()) ||
searchIn.Contains(" " + searchFor));
}
मैं एक डेटाबेस संस्थाओं और इस सहायक को LINQ का उपयोग से बाहर मैचों को खींचने के लिए चाहते हैं। हालांकि, जब मैं कोशिश यह:
IQueryable<Blah> blahs = query.Where(b => stringsMatch(searchText, b.Name);
मैं "संस्थाओं को LINQ विधि को नहीं पहचानता है ..."
के रूप में कोड अगर मैं फिर से लिखें:
IQueryable<Blah> blahs = query.Where(b =>
string.IsNullOrEmpty(searchText) ||
(b.Name != null &&
(b.Name.Trim().ToLower().StartsWith(searchText.Trim().ToLower()) ||
b.Name.Contains(" " + searchText)));
कौन सा तर्कसंगत समकक्ष है, तो चीजें ठीक काम करती हैं। समस्या यह है कि कोड पठनीय नहीं है, और मुझे इसे अलग-अलग इकाई के लिए दोबारा लिखना है जिसे मैं मेल करना चाहता हूं।
जहां तक मेरा बता सकते हैं this one जैसे प्रश्नों से, मुझे क्या करना चाहते हैं इस समय असंभव है, लेकिन मैं आशा करती हूं कि मैं कुछ याद कर रहा हूँ, मैं कर रहा हूँ?
कोशिश करें [अनुमानक बिल्डर] (http://www.albahari.com/nutshell/predicatebuilder.aspx) – Eranga