Foreach中的索引

cam*_*cam 3 c# foreach

我目前正在使用foreach,需要项目的索引.

           foreach (DataRow m_row in base_rows)
       {
           Company nu = new Company(m_row, symb_rows[0]);
       }
Run Code Online (Sandbox Code Playgroud)

这是代码.

我试图在base_rows中获取m_row的索引并使用它来传递symb_rows[index_of_m_row].这是可能的还是我应该使用正常的for循环?

Eri*_*ert 11

"for"循环解决方案非常清晰.作为一个有趣的替代解决方案,您可以完全避开循环:

var companies = baseRows
  .Select((row, index) => new Company(row, symbRows[index]))
  .ToList();
Run Code Online (Sandbox Code Playgroud)

  • @Andrew:因此可能是一个坏主意.我不喜欢聪明的代码.我喜欢简单,无聊,易于阅读和理解的代码,不需要任何聪明.在操作的语义更像是查询而不是转换的上下文中,此技术可能很有用; 我认为在这种特殊情况下它是矫枉过正的,for循环可能是更好的解决方案.真的,这仅用于娱乐目的. (4认同)

And*_*are 7

为了知道集合中的当前索引(使用a foreach),您必须这样做:

Int32 i = 0;
foreach (DataRow m_row in base_rows)
{
    Company nu = new Company(m_row, symb_rows[i]);
    i++;
}
Run Code Online (Sandbox Code Playgroud)

或使用标准for循环.的IEnumerable,因为它是一个只进过的项目的基础序列迭代器接口不公开位置索引属性.