0

我知道这可能有些补救措施,但我正在尝试确定是否在浪费资源将 an 转换IEnumerable为 DataTable。我有数据,IEnumerable<T>但我需要应用业务逻辑。我将在另一个数据中保存IEnumerable<T>我将与之进行比较的数据以及其他此类业务操作。在我看来,我应该能够对与 DataTable 相同的强类型可枚举对象做任何事情.....但我对 DataTables 更熟悉,所以对自己不确定。

最后,数据将最终以 aList<T>形式出现并由 Web 服务序列化,所以我真的觉得进出数据集是一种浪费?

我认为我可以对IEnumerable与 a 相同的对象做任何事情是否正确DataTable?如果我要使用 IEnumerables,我应该简单地使用辅助方法来完成“工作”,还是应该加倍努力并创建扩展?


我的绿色新手正在展示。让我为您提供更多有关数据及其使用方式的信息。这些数据将是发送给订阅者的个人信息。他们可能会进行更改,然后将更新发回。

数据被汇总并发送给他们,但它以标准化(我认为是第 3 级)状态存储。我使用 SP 和 UDF 等汇总数据。该过程有很多连接和游标来评估用户提交的关于他们自己的历史记录,然后确定推荐的操作。用户可以采取或不采取推荐的行动,但无论他们做什么都会被发回并分解回下一次的标准化状态。

我正在进行的辩论(测试环境,所以没有伤害)是用 ORM 替换数据库操作,并通过中间层的工作流执行业务逻辑。这将使我在业务变化中更加活跃和流畅。我的 ORM 获取我的数据,但它采用 IEnumerable 形式,因此我正在为我的工作流寻找最佳数据结构来执行。最后,我没有绑定任何东西,而是创建了一个自定义对象,该对象被序列化并通过 Web 服务发送到客户端。

如果我能提供更多信息,请不要犹豫。我不想变得迟钝。谢谢你

4

2 回答 2

2

IEnumerable主要是一个只读的 API。您可以访问所有成员,您可以进一步与他们合作,但您不能添加新成员或删除一些成员。ReadOnly是“第二个”名字。

DataTable另一方面与 ADO.NET 更相关,对于 DTO 和业务对象来说,它绝对不是一个好的解决方案。它支持添加、删除和删除,但只能在数据层使用。

我建议在您的业务层上使用 Facade 模式,在内部使用 Dao 或 Repository 时包装验证调用

于 2012-12-15T17:44:15.980 回答
0

扩展方法可用于在 this 上执行任何请求/转换IEnumerable<T>。您可能根本不需要 DataTables。可用的 LINQ 扩展方法可以链接/组合在您可以编写的其他自定义扩展方法中。

就更新而言,如果您想通过索引更轻松地访问单个项目,则可以将此 IEnumerable 放入可索引的集合中。但这将取决于您愿意执行的确切操作。

于 2012-12-15T17:38:27.460 回答