سؤال

في الواقع، وهذا هو نفس سؤال عن هذا المنصب:

كيف يمكنني التأكد من استفساراتي LINQ تنفيذه عندما دعا في بلدي DAL، وليس في تأخر الموضة؟

ولكن لأنه لم يفسر <م> لماذا أراد ذلك، يبدو أن المسألة قد مرت فوق قليلا. وهنا قال لي مشكلة مماثلة ولكن بين أفضل وأوضح:

ولدي حفنة من المواضيع في نوعين (تجاهل المواضيع UI لحظة). هناك نوع موضوع "جمع البيانات"، و "الحساب" نوع الموضوع. خيوط جمع البيانات بطيئة. هناك قليلا جدا من البيانات المراد منخول خلال من مجموعة متنوعة من الأماكن. خيوط حساب سريعة نسبيا. نموذج تصميم يصل الى هذه النقطة هو ارسال المواضيع لجمع البيانات من امكانية العثور على معلومات، وعندما كنت تمرير كامل لأعلى البيانات لإجراء العمليات الحسابية.

وعندما مشفرة جمع البيانات الخاصة بي في ينق أنا أنهى رفع بعض من تلك بطء <م> العودة الى بلدي المواضيع حساب . هناك الآن عناصر البيانات التي لا تحصل على حلها تماما حتى أنها تستخدم خلال حساب - وهذه مشكلة

.

وأود أن قوة ينق لإنهاء عملها في وقت معين (نهاية البيان؟ نهاية طريقة؟ "يرجى الانتهاء يصل، اللعنة" استدعاء الأسلوب) لدرجة أنني أعلم أنني لست دفع ثمن ذلك في وقت لاحق . واضاف ".ToList ()" إلى نهاية ينق هو 1. حرج، و2. يشعر مثل الملاكمة شيء على وشك أن بدون علبة في موضوع آخر لحظات على أي حال.

هل كانت مفيدة؟

المحلول

وأنت لن يكون أي شيء الملاكمة - تريد ان تكون التخزين المؤقت نتائج

وعن طريق ToList() هو في الأساس وسيلة للذهاب إذا كنت فعلا تريد البيانات. إلا إذا كنت على استعداد لاستخدام البيانات على الفور، انها حصلت على أن تكون مخزنة <م> مكان ، أليس كذلك؟ قائمة هي مجرد وسيلة مريحة للقيام بذلك.

والبديل هو أن تفعل معالجة ذلك الحين وهناك أيضا - استخدام البيانات كما كنت إنتاجه، بفارغ الصبر. أنا لم يتبع تماما الجانب المواضيع المختلفة من الشيء، لذلك ليس واضحا بالنسبة لي ما إذا كان من شأنها أن تساعدك، ولكن تلك هي أساسا الخيارات المتاحة لك بقدر ما أستطيع أن أرى.

وهذا هو في الواقع <م> إلى حد ما صريحة في وصفك:

<اقتباس فقرة>   

ونموذج التصميم حتى هذه اللحظة هو   لإرسال المواضيع جمع البيانات من ل   العثور على معلومات، وعندما كنت الكامل   تمرير احتياطية من البيانات لإجراء العمليات الحسابية.

ودعوة ToList() يتغير أساسا ما تعود من "استعلام التي يمكن أن تجلب البيانات عندما طلب منه" إلى "البيانات نفسها، مخزنة في قائمة".

نصائح أخرى

هل يمكن ان توضح أكثر لماذا .ToList غير مقبول؟ لقد ذكرت الملاكمة وعلبته ولكن هذه هي تماما موضوعات غير ذات صلة.

وجزء من إجبار استعلام LINQ لاستكمال بناء على الطلب يتطلب تخزين النتائج. وإلا من أجل أن نرى النتائج مرة أخرى، عليك أن repprocess الاستعلام. .ToList يحقق كفاءة هذا عن طريق تخزين العناصر في List<T>.

ومن الممكن تخزين العناصر في الواقع أي بنية بيانات أسلوب مجموعة أخرى مع المفاضلة المختلفة التي قد تناسب احتياجاتك بشكل أفضل.

وهناك خاصية LoadOptions في فئة DataContext التي يمكن أن تساعدك على جلب المزيد من البيانات بفارغ الصبر.

وعدا ذلك يمكن استخدام عدد قليل ذكي وضعت ToList() الصورة.

وأنا أعرف هذا الموضوع القديم ... على أي حال، مضحك لا أحد ذكر .ToLast () حتى الان. أنا أفعل شيئا حيث LINQ ليست أكثر من مجرد foreach تمجد القيادة بعض الآثار الجانبية حيث لا يهمني حقا عن نتيجة الاستعلام ... لذلك أنا لا أريد أن تخصيص أي ذاكرة أكثر وهمية من اللازم.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top