0

Dynamic linq を見てきましたが、明らかに何かが欠けています。

あるシステムから別のシステムにファイルをインポートしようとしています。ファイル情報を含む Excel シートから DataTable をロードしました。(ExcelDataTable)。ユーザーがインポートしたいファイルの HastSet もあります。(FilesToImport)。ユーザーは、スプレッドシートからインポートする情報を選択します。これらの列は動的で、実行時に選択されます。(更新する変数をリストします)。クエリで自分の 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 に答える