c# - Create a dictionary by parsing text in LINQ -


मेरे लॉग फ़ाइल में मेरे पास डेटा है।

  Element1 data1 data2 Data3 Element2 data1 data4 data6 Element3 data9 data3 data5 ....  

और इसी तरह।

मैं इस फ़ाइल के माध्यम से पार्सिंग करके एक शब्दकोश बनाना चाहता हूं:

  शब्दकोष (int, सूची (स्ट्रिंग)) 
/

जहां Ele तत्व 1 से संख्या -> 1, एलिमेंट 2 -> 2 जबकि एलीमेंट 1 के बाद के डेटा को सूची में शामिल किया गया है।

अतः, एलीमेंट 1, डिक्शनरी & lt; 1, सूची & lt; & lt; स्ट्रिंग & gt; & gt; के लिए सूची {data1, data2, data3}
एलीमेंट 2, शब्दकोष के लिए & lt; 2, सूची & lt; स्ट्रिंग & gt; & gt; सूची {data1, डेटा 4, डेटा 6}
... और इसी तरह।

मैंने कुछ प्रोग्रामिंग की तरह

  स्ट्रिंग पंक्तियां [] = फ़ाइल। रीडएल्लाइन (पथ ); Foreach (लाइनों में स्ट्रिंग्स) {// प्रसंस्करण लाइनों तत्व खोजने के लिए और फिर प्रत्येक लाइन afte रिकॉर्ड आर / जब तक मैं एक और तत्व या ईओएल मिल }  

मैं इसे एक LINQ कथन में परिवर्तित करना चाहता हूं, लेकिन मैं इसका उत्तर नहीं समझ पा रहा हूं। मैंने LINQ आदेश ले लो समय पर जाने की कोशिश की लेकिन फिर भी समाधान प्राप्त करने में सक्षम नहीं था।

मुझे नहीं लगता कि आप ऐसा LINQ के साथ कर सकते हैं, और यहां तक ​​कि अगर आप भी कर सकते हैं, तो यह करने के लिए एक विधि लिखने से इसे और अधिक पठनीय या प्रभावी नहीं होगा।

  निजी IEnumerable & lt ; कीवालपेअर & lt; स्ट्रिंग, ट्यूपल & lt; स्ट्रिंग, स्ट्रिंग, स्ट्रिंग & gt; & gt; & gt; ReadAll (स्ट्रिंग पथ) {// आप यहां कुछ और ठोस प्रकार चाहते हैं, लेकिन इससे एक शब्दकोश में और साथ ही कुछ भी करने में मदद मिलेगी। (Var रीडर = नया स्ट्रीमरिडर (पथ)) का उपयोग करना {string title; जबकि ((शीर्षक = रीडर। रीडलाइन ())! = नल) {स्ट्रिंग डेटा 1 = रीडर। रीडलाइन (); स्ट्रिंग डेटा 2 = रीडर। रीडलाइन (); स्ट्रिंग डेटा 3 = रीडर। रीडलाइन (); स्ट्रिंग, स्ट्रिंग & gt; & gt; (शीर्षक, नया ट्यूपल & lt; स्ट्रिंग, स्ट्रिंग, स्ट्रिंग & gt; (डेटा 1, डेटा 2, डेटा 3)) रिटर्न नई कीवालपेयर; }}}  

आपको अभी भी IEnumerable & lt; T & gt; के सभी लाभ मिलते हैं, लेकिन इस तरह से आपको बनाए रखने और इसे बढ़ाने की सहायता के लिए आपकी आवश्यकता होगी।

आप एक साधारण के साथ शब्दकोश बना सकते हैं:

  वापस पढ़ें (पथ)। कोऑयोगिनेशन (c = & gt; c.Key, c = & gt; c.value);  

लेकिन हाँ, यहां तक ​​कि अगर आप LINQ के साथ ऐसा कर सकते हैं, यह वही है जो इसे कवर के तहत वैसे भी कर रहा है। LINQ फ़्रेमवर्क-स्तरीय वाक्यविन्यास चीनी है और आपके कोड को बेहतर बनाने के लिए स्वाभाविक रूप से कुछ भी नहीं करता है, एक तरफ इसे लिखना आसान और अधिक पठनीय बनाने से। लेकिन इस मामले में, मुझे लगता है कि आपकी विधि से स्पष्ट रूप से स्पष्ट होना अधिक पठनीय है। विशेष रूप से फ़ाइल को पार्स करने से शायद चीजों की योजना में एक अपेक्षाकृत महत्वपूर्ण ऑपरेशन होता है।


Comments

Popular posts from this blog

sqlite3 - UPDATE a table from the SELECT of another one -

c# - Showing a SelectedItem's Property -

javascript - Render HTML after each iteration in loop -