连接具有可变列数的两个数据表

时间:2017-06-09 04:55:32

标签: c# vb.net linq join datatable

我正在尝试基于ID列加入两个数据表,但我的问题是我的数据表之一根据请求具有可变列数。

First DataTable(这将始终具有固定数量的列) -

 ID Int,
 firstCol Varchar,
 SecondCol Varchar

第二个DataTable(根据请求,它可以有不同数量的列) -

 ID Int,
 dynamicCol1 varchar,
 dynamicCol2 varchar,
 dynamicCol3 varchar,
 // More or less columns depending on request

现在我想加入这两个数据表,如果可能的话,应该以dataTable的形式返回结果,包括两个表中的所有列。

结果表或可枚举数据列表 -

 ID Int,
 firstCol Varchar,
 SecondCol Varchar
 dynamicCol1 varchar,
 dynamicCol2 varchar,
 dynamicCol3 varchar,
 // More or less columns depending on request

我尝试跟随linq加入这些表,但我不确定如何从两个表中选择所有列。我试过跟随linq,

//submissionData - First datatable
//responseData  - Second datatable
Dim resultData = From subData In submissionData.AsEnumerable()
                 Join resData In responseData.AsEnumerable()
                 On subData.Field(Of Integer)("ID") Equals resData.Field(Of Integer)("ID")
                 Select result = {resData, subData}
                 // Understandably this returns list of set of data rows separately. Which I have to flatten using more code.

我的问题是我select得到了我想要的结果

    Select result = {// what should do here to get the desired result instead of getting my result which needs more code to flatten it out}    

我当然可以编写更多代码并压缩我现在得到的结果但是我想知道是否有更好的方法来获得这个结果,因为我对Linq没有足够的知识。 任何指针/帮助将非常感激。基于C#的帮助也将起作用。如有任何混淆查询,请随时发表评论。提前谢谢。

1 个答案:

答案 0 :(得分:0)

寻找DataTable.Merge。 它按照每个表的ID合并两个表。