如何在 foreach 循环外声明数据行?

How to declare datarow outside foreach loop?

我正在使用 foreach 循环并在该循环内声明了数据行

DataSet ds = Business.Site.GetSiteActiveModulesWithStatus(siteId);               
foreach (DataRow dr in ds.Tables[0].Rows)

如何在 foreach 循环之外实现此数据行以及如何使用 for 循环而不是 foreach 循环?

循环 for:

for(int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
    //To acess the row
    DataRow row = ds.Tables[0].Rows[i];
}

在 for 之外,要访问特定的数据行,您可以这样做:

//Change 0 to other numbers to acess other rows
DataRow row = ds.Tables[0].Rows[0];

要在循环外访问行变量,只需在循环外声明即可:

DataRow rowFound = null;

for(int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
     var currentRow = ds.Tables[0].Rows[i];

     if(true /*To do: define some matching criteria*/)
     {
         rowFound = currentRow;
     }
}

if(rowFound != null)
{
    // We found some matching, what shall we do?
}

但您也可以用 LINQish 风格编写相同的代码:

var rowFound = ds.Tables[0].AsEnumerable()
                           .Where(row => true /*To do: define some matching criteria*/)
                           .FirstOrDefault();

此答案中的所有代码都未经测试。