用于连接 DataTable 上的动态列的动态 LINQ

2024-05-21

我目前遇到的情况不确定如何继续。

我有两个从数据库填充的数据表,我还有一个可用的列名称列表,可用于将这两个数据表连接在一起。我希望编写一组 LINQ 查询,这些查询将:

  1. 显示两个数据表中的行(内部联接,用于从一个数据表更新另一个数据表)。
  2. 显示一个数据表中不存在于另一个数据表中的行(一个查询,左连接用于插入,另一个右连接用于删除)。

现在我知道如何使用正常的 LINQ to 对象或数据表来执行此操作,但是在这种情况下,我需要应用要动态连接的列,并且可能有多个列。查看以下部分示例代码:

table1.AsEnumerable()
.Join(table2.AsEnumerable(),
    dr1 => dr1.Field<string>("ID"),
    dr2 => dr2.Field<string>("ID"),
    (dr1, dr2) => new
    {
        FieldID = dr1.Field<string>("ID"),
        CdGroup = dr2.Field<string>("Name")
    })

问题是我不知道字段类型,所以.Field<string>声明的部分内容无法应用。另外,如果它们是多个连接列,那么我将需要多个连接语句。

我已经阅读了动态 LINQ,它看起来很有前途,但是我还没有像我试图做的那样找到有关动态 LINQ 连接的任何信息。我知道使用嵌套循环或.Select()方法,但我正在尝试将 LINQ 应用于我需要的一些更困难的查询。

有没有人有任何关于如何实现此目标的指示或示例,或者我应该恢复使用非 LINQ 方法?

非常感谢。


如果您使用的是实体框架,则可以下载 Microsoft Dynamics CRM,并使用回答此问题的模式有没有办法构建 QueryExpression 以便您可以动态处理未知数量的条件 https://stackoverflow.com/questions/12591190/is-there-way-to-structure-a-queryexpression-so-that-you-could-dynamically-handle/12595500#comment17003707_12595500

有一个名为 QueryExpression 的构造,您可以从中建模动态查询。请参阅这篇 MSDN 文章http://msdn.microsoft.com/en-us/library/microsoft.xrm.sdk.query.queryexpression.aspx http://msdn.microsoft.com/en-us/library/microsoft.xrm.sdk.query.queryexpression.aspx

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用于连接 DataTable 上的动态列的动态 LINQ 的相关文章

随机推荐