linq - Adding where and sum to lambda expression -
मेरे पास लिनक क्वेरी नीचे है:
var qry = आउटपुट में db.Outputs आउटपुट पर शिफ्टहौर्स में शामिल हों। शिफ्टहॉरस आउटपुट पर। शिफ्टहौर शिफ्टहौर के बराबर हैं। शिफ्टआप डीबी में शिफ्टडाटा में शामिल हों। आउटपुट पर शिफ्टडेट्स। शिफ्टआइएड शिफ्टडाटा के बराबर है। शिफ्टआइड जहां शिफ्टडाटा। शिफ्टडेट == तारीख और amp; ShiftData.Line == लाइन नई प्रगतिडेटा () का चयन करें (CPM = ShiftData.CPM, लक्ष्य = ShiftData.Target, CurrentOutput = db.Outputs.Sum (x = & gt; x.Quantity), PercentOfTarget = (db.Outputs.Sum X = & gt; x.Quantity) / ShiftData.Target) * 100}; यह लगभग मैं क्या चाहता हूं, लेकिन जैसा कि यह खड़ा है, वर्तमान आउटपुट लैम्ब्डा अभिव्यक्ति आउटपुट तालिका की संपूर्ण मात्रा कॉलम की राशि लौट रहा है क्योंकि मुझे कोई अनिश्चित नहीं है कि कैसे एक ' जहां 'खंड और साथ ही योग समारोह (और इसलिए PercentOfTarget भी गलत है)।
जहां खंड पहले की तरह ही होना चाहिए, जहां खंड (तिथि और पंक्ति विधि को पारित पैरामीटर हैं):
जहां ShiftData.ShiftDate == तिथि और ; & amp; ShiftData.Line == रेखा क्या कोई भी मदद कर सकता है?
संपादित करें: वर्तमानऑप्टपुट का स्पष्टीकरण। 'आउटपुट' तालिका में दिए गए 'शिफ्टडाटा। शिफ्टडेट' और 'शिफ्टडाटा लाइन' संयोजन के लिए कई रिकॉर्ड हो सकते हैं, इसलिए मैं निर्दिष्ट 'शिफ्टडाटा' के लिए 'आउटपुट' टेबल 'मात्रा' कॉलम के मूल्यों की गणना करना चाहूंगा और 'रेखा'
संपादित करें: आगे स्पष्टीकरण यह आउटपुट तालिका से कुछ नमूना डेटा है (आउटपुटआईड एक स्वत: वेतन वृद्धि पीके है):
सार्वजनिक वर्ग के आउटपुट {{कुंजी ] सार्वजनिक इंक आउटपुट आईडी {प्राप्त; सेट; } सार्वजनिक पूर्णांक शिफ्टआईडी {प्राप्त करें; सेट; } सार्वजनिक int मात्रा {प्राप्त करें; सेट; } सार्वजनिक इंट शिफ्टहौर {get; सेट; } सार्वजनिक आभासी ShiftData ShiftData {get; सेट; }} यह शिफ्टडाटा तालिका से कुछ नमूना डेटा है (शिफ्टआईड एक ऑटो-इन्क्रिममेंट पीके है, प्रत्येक लाइन के लिए एक से अधिक रिकॉर्ड होंगे क्योंकि आगे लाइन नंबर जोड़े जाते हैं): < / P>
सार्वजनिक वर्ग ShiftData { [कुंजी] सार्वजनिक एट सीआईआईआईआईडी {प्राप्त करें; सेट; } सार्वजनिक दिनांक समय ShiftDate {get; सेट; } सार्वजनिक स्ट्रिंग लाइन {get; सेट; } सार्वजनिक इंट सीपीएम {प्राप्त; सेट; } सार्वजनिक डबल लक्ष्य {get; सेट; }} तो उपरोक्त नमूना डेटा का उपयोग करके, मैं एक प्रगति डेटा ऑब्जेक्ट को आबाद करने की कोशिश कर रहा हूं:
सार्वजनिक श्रेणी ProgressData {सार्वजनिक इंट CPM {get; सेट; } सार्वजनिक डबल लक्ष्य {get; सेट; } सार्वजनिक int चालूऑप्टपुट {get; सेट; } सार्वजनिक डबल प्रतिशत OfTarget {get; सेट; }} नमूना डेटा के आधार पर, मैं उम्मीद करता हूं कि मेरी प्रगतिडेटा ऑब्जेक्ट पंक्ति 1 के लिए 13/2/2014 को बनाई गई है, जैसे कि आबाद हो:
सीपीएम = 5, लक्ष्य = 200, वर्तमानऑप्टपुट = 120, प्रतिशत = लक्ष्य = 60
आप उस प्रयोजन के लिए करने की कोशिश कर सकते हैं: <प्री> var qry = db.ShiftDatas में से ShiftData से आउटपुट में शामिल हैं। ShiftData पर शॉर्टकट। शिफ़्टआइमेंट आउटपुट के बराबर है। शिफ्टग्यूड में ShiftGroup जहां ShiftData.ShiftDate == तिथि & amp; & amp; ShiftData.Line == लाइन नई प्रगतिडेटा () का चयन करें (सीपीएम = शिफ्टडाटा। सीपीएम, लक्ष्य = शिफ्टडाटा। लक्ष्य, वर्तमानऑपरपुट = शिफ्ट ग्रुप। सैम (एक्स = & gt; एक्स। क्वांटिटी), प्रतिफल = लक्ष्य = (ShiftGroup.Sum (x = & gt; X.Quantity) / ShiftData.Target) * 100}; एक और बात, मैं देख नहीं सकता कि आपको शिफ्टहौर के साथ जुड़ने की आवश्यकता क्यों है, क्योंकि इसमें से कोई भी चयन कथन में प्रयुक्त नहीं है।
Comments
Post a Comment