假设我有两个表,它们都包含动态列,我希望在执行左外连接后检索两个表中的所有列的数据集合(稍后我将它绑定到网格视图)。
示例查询:
var query = from TableA in ds.Tables[0].AsEnumerable()
join TableB in ds.Tables[1].AsEnumerable() on new { col1 = TableA.Field<Int32>("colA"), col2 = TableA.Field<DateTime>("colB") }
equals new { col1 = TableB.Field<Int32>("colA"), col2 = TableB.Field<DateTime>("colB") }
into GJ
from sub in GJ.DefaultIfEmpty()
select TableA;
问题: 我想一起选择tableA和tableB。上面的示例查询有效,它在左外连接后填充tableA的所有列。但我希望从两个表中检索所有列。请指教。
答案 0 :(得分:2)
只需将这两个部分选择为匿名类型:
var query = from TableA in ds.Tables[0].AsEnumerable()
join TableB in [ ...] on [...] equals [...] into GJ
from sub in GJ.DefaultIfEmpty()
select new { RowA = TableA, RowB = sub };
结果的每个元素都有两个属性:RowA
是来自TableA
的行,RowB
是来自TableB
的匹配行或如果TableB
中没有匹配RowA
的行,则em> null。