foreach怎么添加逻辑判断当前为第几个0

foreach如何添加逻辑判断当前为第几个0
第二行共35列有3个单元格的值是0
我想在第36、37、38列单元格里依次显示
在1~35列第1个0上面单元格的值6
在1~35列第2个0上面单元格的值3
在1~35列第3个0上面单元格的值4

for (int line = 1; line <= 35; line++)
  {
  int[] ylz = {Convert.ToInt32(qqGrid.GetData(4, line))};
  foreach (int val in ylz)
  {
  if (val == 0)
  {
  qqGrid.SetData(4, 36, Convert.ToInt32(qqGrid.GetData(3, line)));
  }
  }
  }

这样做,只能获取最后一个,该如何写呢?

------解决方案--------------------
int j = 0;
foreach (int val in ylz)
{
if (val == 0)
{
qqGrid.SetData(4, 36, Convert.ToInt32(qqGrid.GetData(3, line)));
}
j++;
}

------解决方案--------------------
foreach (var val in ylz.Select((value, index) => new { value, index }))
{
val.value // 项目的值
val.index // 项目的位置
}
------解决方案--------------------
探讨

int j = 0;
foreach (int val in ylz)
{
if (val == 0)
{
qqGrid.SetData(4, 36, Convert.ToInt32(qqGrid.GetData(3, line)));
}
j++;
}