IEnumerable或DataTable for Updates

时间:2012-12-15 17:33:32

标签: c# datatable ienumerable

我理解这可能有些补救,但我想确定是否浪费资源将IEnumerable转换为DataTable。我有IEnumerable<T>中的数据,但我需要应用业务逻辑。我将在另一个IEnumerable<T>中提供数据,我将与其他此类业务操作进行比较。在我看来,我应该能够对与DataTable相同的强类型可枚举对象做任何事情.....但我对DataTables更熟悉,因此对自己不太了解。

最后,数据将以List<T>结尾,并由网络服务序列化,所以我真的觉得往返于数据集是浪费?

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


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

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

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

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

2 个答案:

答案 0 :(得分:2)

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

另一方面,

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

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

答案 1 :(得分:0)

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

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