【问题标题】:Iterate datarow in c#在c#中迭代数据行
【发布时间】:2017-01-11 01:19:11
【问题描述】:

在 Selected dataRow 中,我总共有 200 个数据记录行。现在我需要将 200 条记录分成 20 [10 次(for 循环)]。所以我使用 take(20)。它将获取前 20 条记录。

我需要删除最后的前 20 条记录,需要选择另外 20 条记录。我需要执行 10 次 for 循环并获取所有 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. 
    }
}

【问题讨论】:

  • .Skip(20).Take(20) 获得下一批。
  • @stuartd 它将跳过第一个 for 循环中的 1 - 20 条记录并取 21 - 40 条记录

标签: c# datatable datarow


【解决方案1】:

你可以使用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

【讨论】:

  • 如果我这样使用,它会在第一次跳过前 20 条记录,并取 21 到 40 条记录
  • 稍微更新了我的答案。您需要将要跳过的数量存储在某个地方,在这种情况下,在变量 startIndex 中。
猜你喜欢
  • 2014-09-24
  • 2017-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-06
  • 1970-01-01
  • 2010-12-06
  • 1970-01-01
相关资源
最近更新 更多