在下一个示例中,我如何知道当前行索引?
foreach (DataRow temprow in temptable.Rows) { //this.text = temprow.INDEX???? }
Joseph.. 22
你必须自己创建一个
var i = 0; foreach (DataRow temprow in temptable.Rows) { this.text = i; // etc i++; }
或者你可以只做一个for循环.
你必须自己创建一个
var i = 0; foreach (DataRow temprow in temptable.Rows) { this.text = i; // etc i++; }
或者你可以只做一个for循环.
我在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; }
如果你可以使用Linq,你可以这样做:
foreach (var pair in temptable.Rows.Cast() .Select((r, i) => new {Row = r, Index = i})) { int index = pair.Index; DataRow row = pair.Row; }
你实际上不.foreach的一个优点是你没有额外的代码处理集来增加和检查长度.
如果你想拥有自己的索引,你必须做这样的事情
int rowindex = 0; foreach (DataRow temprow in temptable.Rows) { //this.text = temprow.INDEX???? this.text = rowindex++; }