我有一个程序,用户可以选择使用不可预测的列模式映射各种数据源。所以他们可能有一个包含 10 个字段的 SQL Server 数据库或一个包含 20 个字段的 Excel 文件——名称可以是任何内容,字段的数据类型可以是文本和数字、日期等的混合。
然后,用户必须提供每个字段含义的映射。因此,第 4 列是“LocName”,第 2 列是“LocX”,第 1 列是“LocDate”,等等。用户作为映射选项呈现的名称和数据类型由 DataSet DataTable ( XSD xchema 文件)。
例如,如果源包含格式如下的数据:
User Column 1: "LocationDate" of type string
User Column 2: "XCoord" of type string
User Column 3: "YCoord" of type string
User Column 4: "LocationName" of type int
并且用户提供了一个映射,该映射需要转换为应用程序所需的 DataTable:
Application Column "LocName" of type string = Column **4** of user table
Application Column "LocX" of type double = Column **2** of user table
Application Column "LocY" of type double = Column **3** of user table
Application Column "LocDate" of type datetime = Column **1** of user table
我有连接到源并以“原始”格式提取用户查询的数据作为 DataTable 的例程 - 所以它采用源的模式。
我的问题是,将原始 DataTable 中的数据“转换”为我的所需应用程序 DataTable 的最佳方法是什么,该投影必须考虑类型转换?
foreach 显然可以工作,但这似乎是蛮力,因为它必须考虑每行上每个循环的数据类型。使用 LINQ 或 ADO.NET 是一种“巧妙”的方法吗?