1

看起来没有任何内置函数可以使用基于此处文档的函数来获取星期几:

http://docs.oasis-open.org/odata/odata/v4.0/odata-v4.0-part2-url-conventions.html

我想要的是一个 Web Api 2.2 OData V4 实现,它可以为这样的 url 请求提供服务:

/meeting?$filter=dayofweek(StartDate) eq '星期三'

或类似的东西。但此刻,这似乎是一场白日梦。有人可以展示如何做到这一点吗?是否必须使用这样的东西来完成?

  builder.EntityType<Meeting>().Collection
            .Function("DayOfWeek")
            .Returns<IEnumerable<Meeting>>();

然后

using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Linq;
using System.Net;
using System.Threading.Tasks;
using System.Web.Http;
using System.Web.OData;

namespace Test.Controllers
{
    public class MeetingsController : ODataController
    {
        private EntityContext db = new EntityContext();

        [EnableQuery]
        public IQueryable<Meeting> GetMeetings()
        {
            return db.Meetings;
        }

        [HttpGet]
        public IHttpActionResult DayOfWeek(DateTime dayofweek)
        {
            //calculate day of week and return string
         }
    }
}
4

1 回答 1

1

您是正确的,没有用于获取星期几的内置函数。从协议的角度来看,定义要在查询子句中使用的自定义函数应该可以解决问题。

不幸的是,尽管您可以按照这篇博文将自己的 DayOfWeek 定义为未绑定函数,但当前版本的 Web API OData V4 仅支持在服务根目录调用此类函数。因此不能用于您的场景。

好消息是,这种对定义要在查询子句中使用的自定义未绑定函数的支持优先用于下一个发布。(下一个将在 12 月,下一个将在 2 月/3 月)。那你就可以用了。

于 2014-12-15T03:09:53.137 回答