C# 用于更新的IEnumerable或DataTable

C# 用于更新的IEnumerable或DataTable,c#,datatable,ienumerable,C#,Datatable,Ienumerable,我知道这可能是一种补救措施,但我正试图确定我是否在浪费资源将IEnumerable转换为DataTable。我有IEnumerable中的数据,但我需要应用业务逻辑。我将在另一个IEnumerable中获得数据,并与其他此类业务操作进行比较。在我看来,我应该能够对强类型的可枚举对象做任何事情,就像对DataTable一样……但是我对DataTables更熟悉,所以我自己也不确定 最后,数据将被放入列表中,并由web服务序列化,所以我真的觉得进出数据集是一种浪费 我是否正确地认为我可以对IEnum

我知道这可能是一种补救措施,但我正试图确定我是否在浪费资源将
IEnumerable
转换为DataTable。我有
IEnumerable
中的数据,但我需要应用业务逻辑。我将在另一个
IEnumerable
中获得数据,并与其他此类业务操作进行比较。在我看来,我应该能够对强类型的可枚举对象做任何事情,就像对DataTable一样……但是我对DataTables更熟悉,所以我自己也不确定

最后,数据将被放入
列表中,并由web服务序列化,所以我真的觉得进出数据集是一种浪费

我是否正确地认为我可以对
IEnumerable
对象执行与
DataTable
相同的任何操作?如果我要使用IEnumerables,我应该简单地使用助手方法来完成“工作”,还是应该多做一点,创建扩展


我的绿色新手正在表演。让我再给你一点关于数据以及如何使用它的信息。这些数据将是发送给订户的个人信息。他们可能会进行更改,然后将更新发送回

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

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

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

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


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

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

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


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

IEnumerable是不可索引的,因此并非所有事情都可以在同一层上以相同的方式完成。为了让我们告诉您要使用的最佳数据结构,您可能需要告诉我们您正在使用数据做什么,以及您需要如何访问数据。我觉得很奇怪,您使用DataTable只是为了操作数据。黑暗中的一枪,我想说的是试试列表吧。。但是我们需要再次了解在linq和简单的列表管理之间,您在做什么,我认为没有必要去DataTables进行数据操作。如上所述,如果您告诉我们您希望对数据做什么,我们可能会更有帮助。提醒-DataTable最初是为了简化数据库访问而设计的,而不是为了数据操作。Eyal我在假期时离开了另一个项目,但我现在回来了,你的评论是我的解决方案。我使用ToList扩展方法将对象强制转换为一个列表,然后使用LINQ执行我需要的任何操作。我想给你的信用,所以如果你能把你的评论转换成一个答案,我';我很乐意为它做标记。