【问题标题】:Silverlight & Dynamics CRM 2011 - Application fails when checking date fieldSilverlight & Dynamics CRM 2011 - 检查日期字段时应用程序失败
【发布时间】:2013-05-03 19:58:05
【问题描述】:

我的一个 CRM 仪表板中有一个 silverlight 应用程序,它需要检查指定日期是否等于记录上的日期,还需要检查其中一个字段是否记录是一个空字符串:

private void SearchContacts(Nullable<DateTime> date)
{
    try
    {
         DateTime UpdatedTime = date ?? DateTime.Now;
         DataServiceQuery<myentity> query = (DataServiceQuery<myentity>)_context.myentitySet.AddQueryOption("$filter", "((my_ForMonthEnding eq '" + UpdatedTime.ToString() + "') and (my_ActionDetails eq ''))");
         query.BeginExecute(OnMyEntitySearchComplete, query);
    }
    catch (SystemException ex)
    {
         _syncContext.Send(new SendOrPostCallback(showErrorDetails), ex);
    }
}

此代码生成以下错误:

运算符“eq”与操作数类型“System.Nullable”不兼容

这对我来说似乎很奇怪,因为我将可以为空的 DateTime 转换为标准 DateTime,所以我一定遗漏了一些东西。有人可以解释一下这里需要做什么吗?

【问题讨论】:

    标签: c# silverlight dynamics-crm-2011


    【解决方案1】:

    这是我使用的有效查询:

    DataServiceQuery<myentity> query = (DataServiceQuery<myentity>)_context.myEntitySet.Where(c => c.my_ForMonthEnding == date && c.my_ActionDetails.Equals(null));
                    query.BeginExecute(OnContactSearchComplete, query);
    

    【讨论】:

      【解决方案2】:

      以前从未使用过 Silverlight 或 DataServiceQuery,所以这可能是在黑暗中刺伤,但 my_ForMonthEnding 将是 nullable 类型。可以试试改成my_ForMonthEnding.Value吗?

      编辑 1

      好的,看起来您正在使用 DataServiceQuery 生成 OData URL。这是我使用 LinqPad 创建的示例过滤器:

      $filter=(CreatedOn eq datetime'2012-11-14T11:18:38.4769698-05:00') and (my_name eq '')
      

      CreatedOn 是DateTime?,这很好用。您可以尝试在字符串日期前添加日期时间并删除外括号吗?

              DataServiceQuery<myentity> query = (DataServiceQuery<myentity>)_context.myentitySet
                  .AddQueryOption("$filter", "(my_ForMonthEnding eq datetime'" + UpdatedTime.ToString() + "') and (my_ActionDetails eq '')");
              query.BeginExecute(OnMyEntitySearchComplete, query);
      

      【讨论】:

      • 您好,为您的回复欢呼,如果我按照您的建议进行操作,则会出现“或操作员预期在 25 号位置”错误。
      • 您好,感谢您再次提供帮助,上面的代码给出了以下错误:“无法识别 EDM.datetime 文字”,知道这是什么意思吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多