LINQ中的动态选择查询

时间:2016-04-05 07:16:25

标签: c# linq join

我需要连接两个数据表并从连接表中检索一些列(将动态选择)。我使用LINQ查询来执行连接,但我无法动态选择列列。

代码是:

    var q = (from pd in tableOne.AsEnumerable()
                 join od in tableTwo.AsEnumerable() on pd.Field<string>(leftTableColumn) equals od.Field<string>(rightTableColumn)
                 select new
                 {
                     Column1=pd.Field<dynamic>(reuiredColumn1),
                     Column2=od.Field<dynamic>(requireColumn2)

                 });

这里tableOne和tableTwo是数据表。这里的问题是我总是能够根据查询只获得两列(column1,column2)。但是我需要根据用户选择动态地形成选择查询。

任何人都可以分享任何关于如何实现这一结果的想法吗?

2 个答案:

答案 0 :(得分:0)

你想要达到什么目的?具有可变用户定义列的数据网格?这是Linq-to-SQL还是LINQ

简易版

  • 如果没有数百列,我只需加载所有列并仅隐藏我想在GUI中显示的列。

硬版

答案 1 :(得分:0)

如果我理解正确的话。您可以选择主表,然后根据某些条件选择所需的列。这是未经测试的代码

 var q = (from pd in tableOne
                 join od in tableTwo on pd.Field equals od.Field
                 select new
                 {
                     pd, 
                     od
                 });

if(somecondition)
{
   var q1 = from result in q
        select q.pd.yourcoloumns;
} 
else 
{
    var q1 = from result in q
            select q.od.yourcoloumns;
}

在我的示例中,pdod是您的表格。