如何在Odata中添加过滤器?

How to add the filter in Odata?

我只筛选所有记录,但无法筛选一条记录。

[HttpGet("GetContact")]
       
public async Task<ActionResult<IEnumerable<ContactEm>>> GetContactEms([FromQuery(Name = "top")] int top, [FromQuery(Name = "$skip")] int skip, [FromQuery(Name = "$orderby")] string orderny, [FromQuery(Name = "$filter")] string filter)
{
    return await _context.ContactEms.ToListAsync();
}

用于“打开”过滤功能,OData 支持 ($filter=...) 您应该创建一个继承自 ODataController 的控制器,并在方法上使用 [EnableQuery] 属性。考虑使用 official manual 进行详细演练。 在你的情况下,它应该是这样的:

public class ContactEmsController : ODataController
{
...
    [EnableQuery]
    public IQueryable<ContactEm> Get()
    {
        return _context.ContactEms;
    }
}