c# - How to Count Predicate Expressions -


मुझे एक सामान्य एंटिटी मिली और नीचे कोड है

  निजी अभिव्यक्ति & lt; Func & lt; GenericEntity, बूल & gt; & gt; GetGenericEntitySearchExpression (जेनेरिक एंटीटीपैमेट्रर खोजपैमेटर) {var predicate = Predicatebuilder.True & gt; जेनेरिक एंटीटी & gt; (); यदि (searchParameter.RegionCode == 1) {predicate = predicate.And & lt; GenericEntity & gt; (ई = & gt; ई। रीजनकोड == खोज Parameter.RegionCode); } अगर (सर्चपैमेटर.काउंटसी कोड & gt; 0) {predicate = predicate.And & lt; जेनेरिक एंटीटी & gt; (ई = & gt; ई। काउंटी कोड == खोज Parameter.CountryCode); }}  

GetGenericEntitySearchExpression () अभिव्यक्ति देता है

"पाठ">

आप किसी अभिव्यक्ति से मेल खाने वाले अभिव्यक्ति की संख्या की गणना करने के लिए एक अभिव्यक्ति विज़िटर बना सकते हैं:

  सार्वजनिक वर्ग काउंटर: अभिव्यक्ति विजिटर {निजी Func & lt; अभिव्यक्ति, bool & gt; विधेय; सार्वजनिक int काउंट {get; निजी सेट; } सार्वजनिक काउंटर (फ़नक & lt; अभिव्यक्ति, बूल & gt; अर्थ) {this.predicate = predicate; } सार्वजनिक ओवरराइड एक्सप्रेशन विज़िट (एक्सप्रेशन नोड) {अगर (बिल्ट (नोड)) गणना ++; वापसी का आधार। विज़िट (नोड); }} सार्वजनिक स्थिर इंट गणना (यह अभिव्यक्ति अभिव्यक्ति, फ़ंक्शन; अभिव्यक्ति, बूल & gt; अर्थ) {var counter = new counter (predicate); counter.Visit (अभिव्यक्ति); वापसी काउंटर। }  

और फिर बस और अभिव्यक्ति की संख्या की गणना करें।

  var numberOfAnds = expression.Count (ex = & gt; Ex.NodeType == अभिव्यक्ति टाइप। और भी);