【问题标题】:DataTables Dynamic Join数据表动态连接
【发布时间】:2013-10-31 06:49:24
【问题描述】:

我在 DataTables 上搜索了很多关于动态连接的信息, 我发现:

Inner Join With Dynamic Columns

Inner Join On DataTables

Dynamic Linq To Dynamic Join

Join DataTable Support Left-Right-Full

但我找不到任何通用的解决方案,假设这种情况用于连接两个表:

DT1 Left Join DT2 On DT1.Id != DT2.Id

或者

DT1 Right Join DT2 On ((DT1.Age + 2) = DT2.Age) OR (DT1.BirthDate > DT2.BirthDate))

如您所见,我需要一些通用解决方案来动态连接两个具有复杂 Where 子句的 DataTables,我有一个数据结构来支持复杂的 Where 子句,但我如何动态连接?有什么建议吗?

【问题讨论】:

  • 你能展示一下你已经尝试过什么样的 Linq 吗?我已经尝试过类似的东西,所以我可能可以帮助你。
  • @Martao 我只知道这种类型的动态 Linq weblogs.asp.net/scottgu/archive/2008/01/07/… 但这个不支持动态加入
  • 同意,那种 Dynamic Linq 并不能真正解决您的问题。但是,我认为 Bognar 的回答可能会有很长的路要走:stackoverflow.com/a/11505884/1606813

标签: c# join datatable


【解决方案1】:

如果在 3.0 或更高版本上工作,您可以在此处使用 LINQ。我知道它不正确,只是给你一个想法。您需要在此代码中进行一些研究。只是为了帮助。您已将DefaultIfEmpty 应用于要从其中返回 null 的表,以防找不到匹配的记录。

var dt = (from dt1  in DT1.AsEnumerable()
          from dt2 in DT2.AsEnumerable().Where(dt1.Id==dt2.Id).DefaultIfEmpty()
          select new {
           dt1.Column
          }).CopyToDataTable();

【讨论】:

  • 我在这里看不到任何动态
  • @SaeidAlizade 那你为什么不创建一个动态查询并传递所需的参数,而不是在运行时加入
  • 动态查询是什么意思? sql的动态查询? DataTables 的来源可以是文件等
猜你喜欢
  • 2020-09-26
  • 2012-02-27
  • 1970-01-01
  • 1970-01-01
  • 2015-08-09
  • 2010-12-25
  • 2016-07-05
  • 2013-10-09
  • 2012-04-01
相关资源
最近更新 更多