WCF Web Api IQueryable不能使用DateTime属性

时间:2012-02-22 04:03:19

标签: c# linq web-services iqueryable wcf-web-api

我无法通过DateTime属性查询任何对象。

public class MyModel
{
    public int Id { get; set; }
    public DateTime TimeStamp { get; set; }
}


[ServiceContract]
public class BuildJobApi
{
    [WebGet]
    public IQueryable<MyModel> GetMyModels()
    {
        return _service.GetMyModels(); // IQueryable<MyModel>
    }
}

我尝试使用WCF WebApi v0.5.0和0.6.0,两者都抛出错误消息。

这是由Id(作品)生成(通过WebApi)生成的URL:

/api/models?$filter=(Id eq 100)

这是由TimeStamp查询生成的URL(不起作用):

/api/models?$filter=TimeStamp ge DateTime'2012-02-22T00:00:00'

我也可以通过日期部分查询(作品):

/api/models?$filter=(year(ExceptionDateTime) eq 2012)

确切的错误消息是500 /内部服务器错误。随着消息:

The server encountered an error processing the request. See server logs for more details.

问:在没有单独查询每个部分的情况下,有什么方法可以查询DateTime属性吗?

1 个答案:

答案 0 :(得分:2)

尽量避免序列化DateTime,为此使用字符串。

例如:

public class MyModel
{
    public int Id { get; set; }
    public string TimeStamp { get; set; }
}

new MyModel { Id = 123, TimeStamp = DateTime.Now.ToString("o") };

"o"适用于ISO 8601格式(文化不变,格式稳定)。