【问题标题】:Design issues and implementing Enumerable.AsEnumerable<FarPoint.Win.Spread.Row>设计问题和实现 Enumerable.AsEnumerable<FarPoint.Win.Spread.Row>
【发布时间】:2013-12-02 09:26:23
【问题描述】:

如果没有AsEnumerable() 方法,我如何让数据类型返回IEnumerable&lt;datatype&gt;。例如:

FarPointSpread1.ActiveSheet.Rows[e.Row]

不包含AsEnumerable(),所以我不能这样做

FarPointSpread1.ActiveSheet.Rows[e.Row].AsEnumerable()

e.Row 是价差活动表中的当前行,我希望能够执行以下操作:

IEnumerable<FarPoint.Win.Spread.Row> = FarPointSpread1.ActiveSheet.Rows[e.Row].AsEnumerable();

我想连续遍历所有字段并在运行时设置值 - 这将来自数据库。 有没有办法我可以做到这一点?如果有一些解决方法,请通过一些示例告诉我。即使该示例无法使用 Farpoint 显示 - 欢迎任何其他类型的示例。提前致谢。

【问题讨论】:

  • 你并没有真正解释你想做什么,只是说你想做什么是行不通的。我不希望能够迭代 Row 对象。它不会公开一个可枚举的Cells 属性吗?还是您想遍历所有行?那么你不应该使用索引器[e.Row],因为它会返回一行。
  • 你希望在一行中循环什么?它的细胞?我不太了解您代码中Row 的实际类型,但如果它有一些单元格集合,您可以实现一些扩展方法
  • @CodeCaster - 我希望能够做到这一点 - IEnumerable&lt;FarPoint.Win.Spread.Row&gt; nthRow = fpSpread1.ActiveSheet.Cells[e.Row].AsEnumerable(); nthRow.ToList().ForEach(r =&gt; r.SetField( "A" , "Test" ); )
  • 你再次显示代码,而不是解释你想要它做什么。是要遍历所有行来设置字段,还是要遍历一行中的所有字段?
  • @CodeCaster - 我想连续遍历所有字段并在运行时设置值 - 这将来自数据库

标签: c# ienumerable enumeration farpoint-spread


【解决方案1】:

您可以创建一个extension method。一个没有 FarPoint 的例子是:

public class TestClass
{
    public IReadOnlyCollection<int> Values { get; set; }
}

public static class TestClassExtensions
{
    public static IEnumerable<int> AsEnumerable(this TestClass cls)
    {
        return cls.Values.AsEnumerable();
    }
}

// Call
var cls = new TestClass();
var enum = cls.AsEnumerable();

此示例显示了扩展方法的一般结构 - 当然它非常简化,因为 TestClass 包含已经以匹配形式存在的值。您将实现扩展方法,使其包含为 FarPoint 枚举行的逻辑。
据我了解您的问题,您想扩展单行并枚举字段的值。您将使用行的数据类型并枚举扩展方法中的字段。

【讨论】:

    猜你喜欢
    • 2012-05-29
    • 2021-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-19
    • 1970-01-01
    • 1970-01-01
    • 2011-02-27
    相关资源
    最近更新 更多