【问题标题】:how to formulate following query in linq dynamically如何在linq中动态制定以下查询
【发布时间】:2014-01-05 12:34:43
【问题描述】:

我想制定 1) 动态查询,如 2) 所示

1)

Select col1, Sum(col2)
    from t1
    where col3 = 1
      and co11 between '01 jan 2009' and '31 dec 2013'
    group by co11

2) 我想在 2012 年制定如下(linq to entity)

 " select "+ @selectclause + " from t1  where " + whereclause

有人建议我,上面的查询可以使用http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx来制定

任何机构都可以使用System.linq.DynamicSystem.Linq.Expression 来制定它吗?由于时间不够,我无法做到。

我正在尝试使用System.Linq.dynamic 进行跟踪

var var1 = context.table1.Where(strWhereClause)
.Where(i => i.co11  >= dtDateFrom && i.co11  <= dtDateTo).GroupBy("new(" + varGroupBy + ")").Select("new(" + varAggregateCol + ")");

还请告诉我我的一堆查询是否可以通过System.Linq.Expression 进行论坛化 那我应该使用System.Linq.Dynamic还是应该优先使用System.Linq.Expression

你的真诚

【问题讨论】:

  • DynamicLinq 是最好和最简单的解决方案!创建表达式树太复杂了……
  • 那么在您当前的解决方案中什么不起作用?
  • 我尝试了很多东西,但无法得到,意思是我正在尝试其他东西。
  • 请建议是否有人有任何答案,我正在使用 vs 2012
  • 请告诉我,我可以使用 system.Linq.Dynamic of 2013 到 2012

标签: linq


【解决方案1】:

这是一个示例:

var query = t1.Where("col3 = 1 AND col1 >= @0 AND col1 <= @1", dtDateFrom, dtDateTo)
            .GroupBy("col1")
            .Select(varAggregateCol)

虽然标准 Dynamic Linq 库只返回一个难以使用的 IQueryable,但我一直在维护一个更新的库 (https://www.nuget.org/packages/System.Linq.Dynamic.Library),它返回 IQueryable{dynamic}(假设您使用的是 .NET 4.0+),允许您可以轻松地动态访问结果成员。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-16
    • 2011-06-13
    相关资源
    最近更新 更多