जब मैं इस foreach
बयान दर्ज ...वैर सिस्टम का मूल्यांकन क्यों करता है। "Foreach (तालिका में पंक्तियों में पंक्ति) पंक्ति में"।
foreach (var row in table.Rows)
... वर के लिए टूलटिप कहते class System.Object
मैं उलझन में हूँ क्यों यह class System.Data.DataRow
नहीं है।
(मामले में आप सोच रहे हैं कि, हाँ, मैं अपने कोड फ़ाइल के शीर्ष पर using System.Data
की है।)
अगर मैं प्रकार स्पष्ट रूप से घोषणा में ...
foreach (DataRow row in table.Rows)
के रूप में
... यह कोई त्रुटि के साथ ठीक काम करता है।
इसके अलावा, अगर मैं ऐसा ...
var numbers = new int[] { 1, 2, 3 };
foreach (var number in numbers)
... वर struct System.Int32
मूल्यांकन करता है। तो, समस्या यह नहीं है कि var
foreach
खंड में काम नहीं करता है।
तो, वहाँ कुछ अजीब के बारे में DataRowCollection
जहां आइटम स्वचालित रूप से DataRow
का मूल्यांकन नहीं है। लेकिन मैं यह नहीं समझ सकता कि यह क्या है। क्या किसी के पास स्पष्टीकरण है?
अद्यतन
मैं वास्तव में फटे किया गया, जिसमें चिह्नित करने के लिए (Codeka और ओलिवर) का जवाब ... अंत में, मैं, क्योंकि यह वास्तव में मेरे सवाल का जवाब Codeka के चिह्नित करने के लिए फैसला किया, लेकिन ओलिवर उत्तर देता है सवाल मुझे पूछना चाहिए था :)
महान बिंदु:
यह
AsEnumerable(this System.Data.DataTable)
याField<T>(this System.Data.DataRow, int)
इसके साथ जैसे कुछ विस्तार कार्यों आप एक foreach पाश के भीतर इसे कहते और स्तंभ उचित प्रकार में सीधे डाल सकता शामिल हैं! +1 –इस उत्तर को प्यार करें। +1 – wonea