निम्न LINQ क्वेरी को उदाहरण के रूप में लें। कृपया कोड पर टिप्पणी न करें क्योंकि मैंने अभी इस प्रश्न के साथ मदद करने के लिए इसे टाइप किया है।बड़े LINQ समूह क्वेरी, दृश्यों के पीछे क्या हो रहा है
निम्न LINQ क्वेरी 'समूह द्वारा' का उपयोग करती है और सारांश जानकारी की गणना करती है। जैसा कि आप देख सकते हैं कि डेटा पर कई गणनाएं की जा रही हैं लेकिन दृश्यों के पीछे LINQ कितनी कुशल है।
var NinjasGrouped = (from ninja in Ninjas
group pos by new { pos.NinjaClan, pos.NinjaRank }
into con
select new NinjaGroupSummary
{
NinjaClan = con.Key.NinjaClan,
NinjaRank = con.Key.NinjaRank,
NumberOfShoes = con.Sum(x => x.Shoes),
MaxNinjaAge = con.Max(x => x.NinjaAge),
MinNinjaAge = con.Min(x => x.NinjaAge),
ComplicatedCalculation = con.Sum(x => x.NinjaGrade) != 0
? con.Sum(x => x.NinjaRedBloodCellCount)/con.Sum(x => x.NinjaDoctorVisits)
: 0,
ListOfNinjas = con.ToList()
}).ToList();
- कितनी बार 'निन्जा' की सूची क्रम से प्रत्येक मान के गणना करने के लिए अधिक दोहराया जा रहा है?
- क्या ऐसी क्वेरी के निष्पादन को तेज करने के लिए फ़ोरैच लूप को नियोजित करना तेज़ होगा?
- निनजास के बाद 'एस्पारेल()' जोड़कर कोई प्रदर्शन सुधार होगा?
- क्या सूची के लिए सारांश जानकारी की गणना करने का एक बेहतर तरीका है?
किसी भी सलाह की सराहना की जाती है क्योंकि हम अपने पूरे सॉफ़्टवेयर में इस प्रकार के कोड का उपयोग करते हैं और मैं वास्तव में अच्छी तरह से समझना चाहता हूं कि LINQ हुड के नीचे क्या कर रहा है (इसलिए बोलने के लिए)। शायद एक बेहतर तरीका है?
+1। –
यह जानना महत्वपूर्ण है कि क्या 'निनजास' 'inumerable' या' IQueryable' है। यदि पूर्व में, यह बिल्कुल एक बार गणना की जाएगी। यदि बाद में, बोलने के लिए कोई गणना नहीं है; क्वेरी को संकलित किया गया है, उदाहरण के लिए, एसक्यूएल सीधे; ग्रुपिंग डीबीएमएस द्वारा की जाती है और सी # में उल्लिखित एकमात्र चीज परिणाम है। –
'निनजास' मेमोरी सूची में है, आईनेमेरेबल। – Belinda