我看过Dynamic linq,但我显然错过了一些东西。
我正在尝试将文件从一个系统导入另一个系统。我有一个从包含文件信息的Excel工作表加载的DataTable。 (ExcelDataTable)。我还有一个用户想要导入的HastSet文件。 (FilesToImport)。用户从speadsheet中选择要导入的信息,这些列是动态的并在运行时选择。 (列出VariablesToUpdate)。我在查询中加入了我的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)};
但就像我说我的专栏会有所不同,直到运行时他才会知道它们是什么。
有什么想法吗?
答案 0 :(得分:0)
您可以使用ExpandoObject进行实施。
Here是ExpandoObject
答案 1 :(得分: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
}