我想知道是否可以对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();
}
答案 0 :(得分:1)
这是不可能的。 OData不支持在查询中转换基元类型。如果没有别的,麻烦将来自使用什么格式(特别是对于行日期时间等)。 您可以编写一个服务操作来为您处理此问题(假设您的查询提供程序支持此操作)。