Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ODataV4 Web Api中的星期日函数_C#_Asp.net Web Api_Odata_Asp.net Web Api Odata - Fatal编程技术网

C# ODataV4 Web Api中的星期日函数

C# ODataV4 Web Api中的星期日函数,c#,asp.net-web-api,odata,asp.net-web-api-odata,C#,Asp.net Web Api,Odata,Asp.net Web Api Odata,看起来没有任何内置函数可以使用基于以下文档的函数获取星期几: 我想要的是一个Web Api 2.2 OData V4实现,它可以为url请求提供如下服务: /会议?$filter=星期一(开始日期)相等于“星期三” 或者类似的东西。但此刻,这似乎是一场白日梦。有人能告诉我怎么做吗?必须用这样的东西吗 builder.EntityType<Meeting>().Collection .Function("DayOfWeek") .R

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

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

/会议?$filter=星期一(开始日期)相等于“星期三”

或者类似的东西。但此刻,这似乎是一场白日梦。有人能告诉我怎么做吗?必须用这样的东西吗

  builder.EntityType<Meeting>().Collection
            .Function("DayOfWeek")
            .Returns<IEnumerable<Meeting>>();
builder.EntityType()集合
.功能(“星期五”)
.Returns();
然后

使用System.Data.Entity;
使用System.Data.Entity.Infrastructure;
使用System.Linq;
Net系统;
使用System.Threading.Tasks;
使用System.Web.Http;
使用System.Web.OData;
名称空间测试控制器
{
公共类会议控制器:ODataController
{
私有EntityContext db=新EntityContext();
[启用查询]
公共IQueryable GetMeetings()
{
返回db会议;
}
[HttpGet]
公共IHttpActionResult DayOfWeek(DateTime DayOfWeek)
{
//计算星期几并返回字符串
}
}
}

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

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


好消息是,这种对定义查询子句中使用的自定义未绑定函数的支持在下一个版本之后的版本中得到了优先考虑。(下一个将在12月,下一个将在2月/3月)。那你就可以用了

据我所知,DayOfWeek不支持这样的内置函数,您是对的,而且目前您似乎只能通过实现OData函数来实现这一点。是否有指向Web API OData路线图的链接?只是出于好奇?@Richie核心库路线图可以从其Github repo的问题跟踪程序中查看:。Web API OData现在位于此处:。您应该将组件指定为要查看的Web API OData。核心版本每周更新一次。Web API OData的版本可能更粗糙一些。
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
         }
    }
}