Linq返回连接中所有表的所有列

时间:2010-10-15 07:34:17

标签: c# linq

假设我有两个表,它们都包含动态列,我希望在执行左外连接后检索两个表中的所有列的数据集合(稍后我将它绑定到网格视图)。

示例查询:

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的所有列。但我希望从两个表中检索所有列。请指教。

1 个答案:

答案 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。