2017-01-10 19 views
1

В выбранных данных. У меня есть полностью 200 записей записей. Теперь мне нужно разделить 200 записей на 20 [10 раз (для цикла)]. поэтому я использую take (20). Он займет первые 20 записей.Iterate datarow in C#

Мне нужно удалить первые 20 записей в последний раз и вам нужно выбрать еще 20 записей. Мне нужно выполнить цикл 10 раз и получить все 200 записей.

DataRow[] selectedDataRow = dtSMSDetails.Select("description = '" + smsDescription + "'"); 

if (selectedDataRow.Length > 0) 
{ 
    string smsRecordId = ""; 
    string mobileNum = ""; 
    string smsSubject = ""; 

    foreach (DataRow rows in selectedDataRow.Take(20)) 
    { 
     smsRecordId += rows["activityid"].ToString() + ","; 
     smsSubject = rows["subject"].ToString(); 
     mobileNum += rows["telephone1"].ToString() + ","; 
     // Here I need to remove the first 20 (take 20) records from the selected data row and need to loop next 20 records. 
    } 
} 
+2

'Пропустите (20) .Снять (20)' получает следующую партию. – stuartd

+0

@stuartd Он пропустит 1 - 20 записей в первом цикле и возьмет запись 21 - 40 – User

ответ

3

Вы можете использовать Skip()

int startIndex = 0; 

for (int i = 0; i < 10; i++) 
{ 
    foreach (DataRow rows in selectedDataRow.Skip(startIndex).Take(20)) 
    { 
     smsRecordId += rows["activityid"].ToString() + ","; 
     smsSubject = rows["subject"].ToString(); 
     mobileNum += rows["telephone1"].ToString() + ","; 
    } 

    startIndex += 20; 
} 

Read more

+0

, если я так использую, что он пропустил первые 20 записей в первый раз и взял 21 до 40 записей – User

+0

Обновлено мой ответ немного. Вам нужно сохранить сумму, которую вы хотите пропустить где-нибудь, в этом случае в переменной 'startIndex'. – VDWWD

+0

Спасибо, что вы спасли мой день .... – User