我有一种情况,我目前不确定如何进行。
我有两个从数据库填充的数据表,我还有一个可用的列名列表,可用于将这两个数据表连接在一起。我希望编写一组 LINQ 查询,它们将:
- 显示两个数据表中的行(内连接,用于从另一个更新一个)。
- 显示一个数据表中不存在于另一个数据表中的行(一个查询,用于插入的左连接,另一个用于删除的右连接)。
现在我知道如何使用普通的 LINQ 对对象或数据表执行此操作,但是在这种情况下,我需要应用列以动态连接,并且可能不止一个。查看以下部分示例代码:
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 方法?
非常感谢。