我已經看過Dynamic linq,但我顯然缺少一些東西。從列表<string>在linq select子句在運行時返回列
我試圖從一個系統導入文件到另一個。我從包含文件信息的Excel工作表加載了一個DataTable。 (ExcelDataTable)。我也有一個HastSet用戶想要導入的文件。 (FilesToImport)。用戶從speadsheet中選擇他想要導入的信息,這些列是動態的,並且在運行時被選中。 (List 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)};
但是就像我說過的,我的列會有所不同,直到運行時我纔會知道它們是什麼。
任何想法?
你可以選擇*所有*字段作爲一個'Dictionary',然後有另一個LINQ語句只選擇你實際需要的字段嗎? –
CodingGorilla
我接受了你的建議並與之一起運行。我沒有使用Dictionary,我只是使用查詢集合中的DataRow。 – ehcanadian
您應該將您的代碼作爲答案發布,然後將其標記爲已接受的答案,以便您的問題不會無法解決,其他人可以從您的解決方案中受益。 – CodingGorilla