0

我看过 Dynamic linq 但我显然遗漏了一些东西。

我正在尝试将文件从一个系统导入到另一个系统。我有一个从包含文件信息的 Excel 表加载的 DataTable。(Excel 数据表)。我还有一个用户想要导入的文件的 HastSet。(文件导入)。用户从电子表格中选择他想导入的信息,这些列是动态的并在运行时选择。(列出要更新的变量)。我在查询中加入了我的 ID,但我不确定如何从数据表中返回所需的列。

DataTable dt = new DataTable();
var query =
    from excelRow in this.ExcelDataTable.AsEnumerable()
    join file in this.FilesToImport.AsEnumerable()
    on excelRow.Field<Guid>("ceGuid") equals file.SourceFileIdentifier
    select dt.LoadDataRow(new object[]
    <COMPLETELY LOST HERE>
    , false);
query.CopyToDataTable();

如果我知道我想用类似的东西返回什么,我可以解决它;

select new { ImportSourceFilePath = excelRow.Field<string>(filePathColumn)};

但就像我说的那样,我的专栏会有所不同,直到运行时我才会知道它们是什么。

有任何想法吗?

4

2 回答 2

0

我最终做了什么;

var foundExcelRows =
from excelRow in this.ExcelDataTable.AsEnumerable()
join file in this.FilesToImport.AsEnumerable()
on excelRow.Field<Guid>("ceGuid") equals file.SourceFileIdentifier
select excelRow;

for (int i = 0; i < foundExcelRows.Count(); i++)
{
    DataRow row = foundExcelRows.ElementAt(i);
    // work with this row since I know the columns I expect   
}
于 2013-08-30T03:02:53.073 回答
0

您可以使用ExpandoObject进行实施。

是一个小教程ExpandoObject

于 2013-08-27T20:01:16.873 回答