【问题标题】:Using oData substringof for datatypes other than string对字符串以外的数据类型使用 oData substringof
【发布时间】:2012-08-14 04:48:11
【问题描述】:

我想知道是否可以为int 字段使用substringof(或类似的?)过滤器来过滤oData?因为我想根据他们的EnquiryID 查询我所有的Enquiries,但我希望它是一个包含而不是完全匹配。这可以进行强制转换/转换吗?

这是我目前的查询:

/api/Enquiries?filter=substringof('123', EnquiryID)

但我收到以下错误:

Method 'Boolean Contains(System.String)' declared on type 'System.String' 
cannot be called with instance of type 'System.Int32'

我希望它返回所有在其EnquiryID 中包含123 的查询。使用DateTime 类型时,我也得到了同样的结果..

编辑

这是我的Enquiries 控制器中的Get 方法:

[Queryable]
public IQueryable<EnquiryDTO> Get()
{
    var query = from enquiry in context.Enquiries
                select new EnquiryDTO
                {
                    CustomerID = enquiry.CustomerID,
                    OrderDate = (DateTime)enquiry.EnquiryDate,
                    OrderID = enquiry.EnquiryID,
                    Owner = enquiry.Owner
                };
    return query.AsQueryable();
}

【问题讨论】:

    标签: asp.net-web-api odata


    【解决方案1】:

    这是不可能的。 OData 不支持在查询中转换原始类型。如果不出意外,麻烦将在于使用什么格式(特别是对于行日期时间等)。 不过,您可以编写一个服务操作来为您处理这个问题(假设您的查询提供程序支持这个)。

    【讨论】:

      猜你喜欢
      • 2012-04-25
      • 2012-11-21
      • 1970-01-01
      • 1970-01-01
      • 2013-04-12
      • 2010-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多