【问题标题】:Dynamic Linq Datetime where动态 Linq 日期时间在哪里
【发布时间】:2012-10-24 09:16:58
【问题描述】:

我使用动态 linq 来构建查询,但我遇到了 DateTime

的问题
  • queryResults- 包含上一个查询的结果列表。

  • sr.FromDate- 一个日期时间参数

我想要做的是获得大于等于 sr.FromDate 参数的所有结果

var z = queryResults
            .Where("Min(Datetime) >= @0", sr.FromDate)
            .ToDictionary(g => g.FirstOrDefault().ServiceInstanceId, g => g.ToList());

例外:

ParseError  ,    '.' or '(' expected

编辑:

只是为了澄清我们使用动态 linq SR 对象包含字符串 int 和日期参数 如果参数的值不是 null 我正在构建查询

编辑 2

我发现了我的 privus 问题,但现在我遇到了另一个问题,我正在使用它来构建查询

  private static string GetQueryTemplet(string criteria)
    {

        switch (criteria)
        {

            case "FromDate":
                return " Min(Track.Datetime) >= {0} ";
            case "ToDate":
                return " Max(Track.Datetime) <=  {0} ";

             default:
                return "";
        }

比我将数据传递给

 var z = queryResolts
             .Where(query)
            .ToDictionary(g => g.Key, g => g.Select(h => h.Track));

由于某种原因我得到了这个异常

Operator '>=' incompatible with operand types 'DateTime' and 'Int32'

我试图以多种方式解析它,但没有任何效果......

谢谢 三木

【问题讨论】:

    标签: c# linq dynamic-linq


    【解决方案1】:

    假设您的结果有一个 DateTime 列

    var z = queryResults
                .Where(result => result.DateTime >= sr.FromDate)
                .ToDictionary(g => g.FirstOrDefault().ServiceInstanceId, g => g.ToList());
    

    【讨论】:

    • @MIkCode 为什么?在这种情况下,您不会从中获得任何好处。您是否需要动态更改列名或其他内容?如果不;不要使用它,因为你不需要它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-02
    • 1970-01-01
    • 2013-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多