मेरे पास ऑब्जेक्ट्स (सूची-अभिभावक क्लास) की एक सूची के भीतर वस्तुओं की एक सूची है, जिसमें इसकी वस्तुओं में से एक नेस्टेड सूची (सूची-चाइल्ड क्लास) है। सूची-चाइल्ड क्लास को पॉप्युलेट करने के लिए मैंने नीचे दिखाए गए फ़ोरैच लूप का उपयोग किया है। मैंने नीचे एक शोक क्वेरी भी निहित की है।सी # में किसी सूची में एक सूची पॉप्युलेट करना फ़ोरैच लूप का उपयोग नहीं कर रहा है। बेहतर तरीका?
इस बिंदु पर मुझे कुछ प्रदर्शन समस्याएं हैं और मुझे लगता है कि ऐसा करने का एक बेहतर तरीका है जिसे मैं अभी नहीं ढूंढ रहा हूं।
प्रश्न: मैं इसे बेहतर/तेज़ कैसे कर सकता हूं?
नोट - यह एक वेब आधारित .NET एमवीसी अनुप्रयोग सी # में लिखा गया है। मैं एक एसक्यूएल डेटाबेस में ईएफ का उपयोग करता हूं।
public class ParentClass
{
public int pcid { get; set; }
public List<ChildClass> ChildClassList { get; set; }
}
public class ChildClass
{
public int pcid { get; set; }
public int ccid { get; set; }
}
public class DoWork
{
public void ExampleMethodForEach()
{
List<ParentClass> ParentClassList = new List<ParentClass>();
foreach(ParentClass a in ParentClassList)
{
a.ChildClassList = EFDatabase2.where(b => b.pcid == a.pcid).select(b => b.ccid).ToList();
}
}
public void ExampleMethodLinq()
{
var ParentClassList = (from a in EFDatabase
select new ParentClass
{
ccid = a.ccid,
pcid = (from b in EFDatabase2
where b.pcid == a.pcid
select b.ccid).ToList()
//something like this were I nest a query
}).ToList();
}
}
यदि आपके पास * डेटाबेस * के साथ प्रदर्शन समस्या है, तो यह * नहीं * 'सूची ',' foreach' आदि है लेकिन * डेटाबेस * दोष है। अंतिम पूछताछ क्या है? क्वेरी कितने रिकॉर्ड लाती है? सूची के भीतर * सूची के मामले में, आप जितनी कॉल कर सकते हैं उतनी कॉल करने का प्रयास करें: क्या आप * एक बार * में सभी डेटा ला सकते हैं और फिर उन्हें अपनी इच्छित संरचना में व्यवस्थित कर सकते हैं? –
जो मैंने पाया था, वह था कि डेटाबेस को मारने की संख्या कितनी बार संभवतः मुद्दों का कारण बन रही थी। मेरे वर्तमान ऐप में मैं डेटा को मेमोरी में खींच रहा हूं, फिर फोरच लूप चला रहा हूं। यह बेहतर प्रदर्शन करता है लेकिन ऐसा लगता है कि यह थोड़ा भारी हैरान है। मैं सोचता रहता हूं कि मैं सब एक बड़ी क्वेरी में किया जा सकता है। – KungFuMaster
जहां तक रिकॉर्ड्स की मात्रा है, यह अपेक्षाकृत छोटा है, हम एक या दो बार वापस लौट रहे हैं, लेकिन फिर प्रत्येक में कई सूचियां हैं जिनमें 3 - 10x अधिक रिकॉर्ड होंगे। इसके अलावा इसे खींचने के लिए सवाल थोड़ा और जटिल हैं। तो मेरी स्थिति के विवरण में उतरना यह शायद इतना आसान नहीं है। प्रश्न: क्या आपको लगता है कि उपरोक्त विधियां इस स्थिति को हल करने के सामान्य/सामान्य तरीके हैं? – KungFuMaster