将oData substringof用于string以外的数据类型

时间:2012-08-13 19:47:23

标签: asp.net-web-api odata

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

到目前为止,这是我的查询:

/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'

我希望它能在123中返回包含EnquiryID的所有查询。使用DateTime类型时,我也会得到相同的信息。

修改

以下是Get控制器中的Enquiries方法:

[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();
}

1 个答案:

答案 0 :(得分:1)

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