在下一个示例中,我如何知道当前行索引?
foreach (DataRow temprow in temptable.Rows)
{
//this.text = temprow.INDEX????
}
Run Code Online (Sandbox Code Playgroud)
Jos*_*eph 22
你必须自己创建一个
var i = 0;
foreach (DataRow temprow in temptable.Rows)
{
this.text = i;
// etc
i++;
}
Run Code Online (Sandbox Code Playgroud)
或者你可以只做一个for循环.
Jon*_*eet 16
我在MiscUtil中有一个类型可以帮助解决这个问题SmartEnumerable.这是一个愚蠢的名字,但它的工作原理:)请参阅用法页面了解详细信息,如果你使用的是C#3,你可以使它更简单:
foreach (var item in temptable.Rows.AsSmartEnumerable())
{
int index = item.Index;
DataRow value = item.Value;
bool isFirst = item.IsFirst;
bool isLast = item.IsLast;
}
Run Code Online (Sandbox Code Playgroud)
adr*_*nks 13
如果你可以使用Linq,你可以这样做:
foreach (var pair in temptable.Rows.Cast<DataRow>()
.Select((r, i) => new {Row = r, Index = i}))
{
int index = pair.Index;
DataRow row = pair.Row;
}
Run Code Online (Sandbox Code Playgroud)
int rowIndex = temptable.Rows.IndexOf(temprow);
Run Code Online (Sandbox Code Playgroud)
你实际上不.foreach的一个优点是你没有额外的代码处理集来增加和检查长度.
如果你想拥有自己的索引,你必须做这样的事情
int rowindex = 0;
foreach (DataRow temprow in temptable.Rows)
{
//this.text = temprow.INDEX????
this.text = rowindex++;
}
Run Code Online (Sandbox Code Playgroud)