c# - Can I clone an IQueryable in linq? For UNION purposes? -


मेरे पास WorkOrders की एक तालिका है। तालिका में प्राइमरीवर्ककार & amp; प्राथमिक भुगतान फ़ील्ड इसमें एक माध्यमिक वर्कर और amp; माध्यमिक भुगतान फ़ील्ड (जो null हो सकता है)।

मैं 2 बहुत ही समान प्रश्नों और amp; उन्हें संघ बनाएं ताकि यह एक कार्यकर्ता फ़ील्ड और amp; पे फ़ील्ड इसलिए यदि एक एकल वर्कऑर्डर के रिकॉर्ड में दोनों प्राइमरी वर्कर और माध्यमिक वर्कर क्षेत्र में आते थे तो मुझे दो रिकॉर्ड वापस मिलेंगे।

इन 2 प्रश्नों का "खंड" हिस्सा बहुत समान है और निर्माण के लिए लंबा है। यहां एक डमी उदाहरण है

  var q = ctx.WorkOrder.Where (w = & gt; w.WorkDate & gt; = StartDt & amp; w.WorkDate & lt; = EndDt); अगर (showApprovedOnly) {q = q.Where (w = & gt; w.IsAprproved); } // .. अब अधिक फिल्टर लागू  

अब मेरे पास hideZeroPay नामक एक सर्च फ्लैग है अगर यह सच है तो मैं रिकॉर्ड को शामिल नहीं करना चाहता, अगर कर्मचारी को $ 0 का भुगतान किया गया था लेकिन जाहिर है कि 1 क्वेरी के लिए मुझे PrimaryPay फ़ील्ड की तुलना करने की आवश्यकता है और दूसरे में मुझे सेकंडपेप क्षेत्र की तुलना करने की आवश्यकता है।

तो मैं सोच रहा हूं यह कैसे करें।

क्या मैं अपना आधार क्वेरी q को क्लोन कर सकता हूं और प्राथमिक और amp; माध्यमिक कार्यकर्ता इसके बारे में पूछताछ करता है और फिर उन 2 प्रश्नों को एक साथ संघित करता है?

हम्म, मुझे यकीन नहीं है कि मैं तुम्हें इरादा समझता हूँ लेकिन मुझे लगता है कि क्लोनिंग आवश्यक नहीं है आप अपनी आधार क्वेरी से दो नए प्रश्नों को क्यों विभाजित नहीं करते हैं?

  var baseQuery = ctx.WorkOrder.Where (w = & gt; w.WorkDate & gt; = StartDt && w.WorkDate & lt; = एंडडीटी); IQueryable & LT; WorkOrder & gt; QUERY1; अगर (showApprovedOnly) {query1 = बेसक्वायर। कहाँ (w = & gt; w.IsApproved); } // query1 पर अधिक फिल्टर ... IQueryable & lt; WorkOrder & gt; QUERY2; यदि (/ * कुछ * /) query2 = बेसक्वायर। कहाँ (w = & gt; डब्ल्यू। स्मेथिंग);  

अपने प्रश्नों को परिभाषित करने के बाद आप उन्हें (प्रति गणण) व्याख्या कर सकते हैं और अपने अलग परिणाम प्राप्त कर सकते हैं।

  var res1 = query1.ToList () ; Var res2 = query2.ToList ();   


Comments

Popular posts from this blog

windows - Heroku throws SQLITE3 Read only exception -

lex - Building a lexical Analyzer in Java -

python - rename keys in a dictionary -