【问题标题】:Dynamic select query in LINQLINQ 中的动态选择查询
【发布时间】:2016-04-05 07:16:24
【问题描述】:

我需要连接两个数据表并从连接的表中检索一些列(将动态选择)。我已经使用 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)。但是我需要根据用户选择动态形成选择查询。

任何人都可以分享有关如何实现此结果的任何想法吗?

【问题讨论】:

  • 你的问题不太清楚

标签: c# linq join


【解决方案1】:

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

 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 是您的表格。

【讨论】:

  • 关于以下(var q1 = from result in q select q.pd.yourcoloumns;)在您的代码中如何在同一个查询中选择多个列?我是这样使用的,var q1 = from result in q select q.Select(i=>i.pd[reuiredColumn1]);...我仍然一次只能得到一列。
  • 用逗号分隔q.Select(i=&gt;i.pd.Coloumns1, i.pd.coloumn2)pdod 之后加一个点.
【解决方案2】:

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

简易版

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

硬版

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-06
  • 2014-10-07
  • 1970-01-01
  • 1970-01-01
  • 2013-05-07
相关资源
最近更新 更多