我正在尝试继承FarPoint.Win.Spread.FpSpread
类并实现IEnumerable<FarPoint.Win.Spread.Row>
,以便我能够在FarPoint传播行或单元格上应用linq。我试过多种方法,但我一直都会遇到错误:
class myspread : FarPoint.Win.Spread.FpSpread, IEnumerable<FarPoint.Win.Spread.Row>
{
public IEnumerator<FarPoint.Win.Spread.Row> GetEnumerator()
{
return myspread.GetEnumerator();// Error on this line
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
第二次尝试:
class myspread : FarPoint.Win.Spread.Row, IEnumerable<FarPoint.Win.Spread.Row>
{
public IEnumerator<FarPoint.Win.Spread.Row> GetEnumerator()
{
return myspread.GetEnumerator();// Error on this line
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
第三次尝试:
class myspread : FarPoint.Win.Spread.Cells, IEnumerable<FarPoint.Win.Spread.Cells>
{
public IEnumerator<FarPoint.Win.Spread.Row> GetEnumerator()
{
return myspread.GetEnumerator();// Error on this line
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
我希望能够在FarPoint工作表上的很多对象上应用linq
现在上面的数据可能是lacs - 我需要对上面的数据做很多格式化并在某些条件下更新值。我怎样才能做到这一点?
答案 0 :(得分:1)
在所有情况下,您都指出以下行生成错误:
return myspread.GetEnumerator();// Error on this line
在不了解您的代码的情况下,我们无法真正了解到这一点。看起来你试图在GetEnumerator
类上静态调用myspread
方法,这可能不是你想要它做的。
我假设您希望您的类提供活动工作表中行的枚举。查看文档here,特别是Rows
collection的文档,我会猜测它的外观:
class myspread : FarPoint.Win.Spread.FpSpread,
IEnumerable<FarPoint.Win.Spread.Row>
{
public IEnumerable<FarPoint.Win.Spread.Row> GetEnumerator()
{
var rows = ActiveSheet.Rows;
for (int i = 0; i < rows.Count; ++i)
yield return rows.Item[i];
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
当然,如果Rows
集合已实施IEnumerable<Row>
,那么这只是一个问题:
public IEnumerable<FarPoint.Win.Spread.Row> GetEnumerator()
{
return ActiveSheet.Rows;
}
FarPoint文档并未表明对集合中IEnumerable<Row>
的任何支持。