سؤال

هل هناك سبب لعدم تمكني من القيام بما يلي:

foreach (var Item in DataTable.Rows) {

بدلا من الاضطرار إلى القيام به

foreach (DataRow Item in DataTable.Rows) {

كنت أعتقد أن هذا ممكن ، كما هو الحال في أنواع البيانات الأخرى. علي سبيل المثال:

foreach (var Employee in Staff) { // string[] Staff etc...

عندما أحاول أول حلقة foreach ، أحصل على الخطأ CS0021: لا يمكن تطبيق الفهرسة مع [] على تعبير عن "كائن".

لماذا لا يستطيع المترجم معرفة أن .Rows يعيد مجموعات من Datarows؟

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

المحلول

Rows عوائد فعالة IEnumerable (DataRowCollection) ، لذلك يمكن للمترجم فقط اختيار object كنوع ل var. يستخدم Rows.Cast<DataRow> إذا كنت تريد استخدام var.

Cast يتم تعريفه على التعداد, ، لذلك عليك تضمين system.linq.

نصائح أخرى

براين محق تمامًا في سبب ذلك ، ولكن هناك طريقة أبسط لتجنب ذلك: استخدام datatableStensions.Asenumerable ():

foreach (var row in DataTable.AsEnumerable())
{
    ...
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top