我有一种情况,目前我不确定如何继续。
我有两个从数据库填充的数据表,我还有一个可用的列名列表,可用于将这两个数据表连接在一起。我希望编写一组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方法?
非常感谢。
答案 0 :(得分:0)
如果您使用的是Entity Framework,则可以下载Microsoft Dynamics CRM,并使用回答此问题的模式Is there way to structure a QueryExpression so that you could dynamically handle a unknown number of conditions
有一个名为QueryExpression的构造,您可以从中构建动态查询。请参阅此MSDN文章http://msdn.microsoft.com/en-us/library/microsoft.xrm.sdk.query.queryexpression.aspx