【问题标题】:LEFT JOIN DataTables - how do I get this to work? [duplicate]LEFT JOIN DataTables - 我如何让它工作? [复制]
【发布时间】:2012-05-01 20:41:55
【问题描述】:

可能重复:
LEFT OUTER JOIN 2 datatables

假设这是我的确切代码:

        DataTable table1 = new DataTable();
        DataTable table2 = new DataTable();
        DataTable joinedtable = new DataTable();

        table1.Columns.Add("ID");
        table1.Columns.Add("ColA");
        table1.Rows.Add(1, "A");

        table2.Columns.Add("ID");
        table2.Columns.Add("ColB");
        table2.Rows.Add(1, "B");

除了将 table1 和 table2 连接在一起并将其放入joinedTable 之外,我的查询(不管是否为 LINQ)会怎样? 当我尝试搜索示例时,我一直在寻找这样开头的示例:

        var result = from x in table1
            join y in table2 on x.ID equals y.ID 

但是,我在 DataTable1 上收到一个错误,我发现建议改为执行“table1.AsEnumerable()”,但后来我没有 x.ID。 .ID 未定义。我只有普通 DataRow 拥有的 x 的东西。 我在这里做错了什么?我似乎无法弄清楚这一点。

感谢大家的帮助。

【问题讨论】:

  • @dash 我使用 System.Data;,它应该包括 .Data.DataSetExtensions,对吗?我假设是这样,但想确认一下。谢谢。
  • 不——你需要 System.Data.DataSetExtensions——这是专门用于 Linqyfying 你的 DataTables 的。好吧,不是特别的,但它有帮助。请参阅msdn.microsoft.com/en-us/library/…(位于 DataSetExtensions 中并添加您所追求的功能)它们是否在您项目的参考中?如果是,请忽略我的评论。
  • @user1308743 - 任何理由两次发布相同的问题?您可以编辑原始问题以添加更多信息。
  • 啊,我看到了你真正的问题。答案在另一个问题中 - 例如,您可以通过 DataRow 的索引器访问列 - x.Field 或 x["Id"]。这很好,构成您的加入条件。答案在您的另一篇文章中:-) @Joanna 也回答了您的问题。无需重复发布!
  • 不 - 你很好,请忽略我的评论 - 有时 DataSetExtensions 不可用存在问题,但现在不是那个时候。你的问题已经在你的另一个帖子上得到了回答,所以我会去那里检查一下。祝你好运!

标签: c# linq join datatable


【解决方案1】:

使用DataTables 不幸的是,它变得有点棘手(如果您出于任何原因不想使用LINQ),因为您需要定义实际上 定义的DataRelation 对象这两个DataTables 之间的关系定义。

更多信息可以看看这个解释:

How to join two DataTables using C#

【讨论】:

  • 我可以使用 LINQ,但我似乎无法让它工作。你能用我上面设置的简单数据表给我看一个简单的例子吗?我发现的例子似乎无法开始工作。感谢您的帮助。
  • 这里是数据集连接助手类的完整实现 >> support.microsoft.com/kb/326080/en-us
猜你喜欢
  • 2012-02-18
  • 2011-03-28
  • 2011-02-18
  • 1970-01-01
  • 2015-08-01
  • 1970-01-01
  • 2019-08-15
  • 1970-01-01
  • 2021-10-06
相关资源
最近更新 更多