sách gpt4 ai đã đi

Toán tử nhị phân LessThan không được định nghĩa cho các kiểu 'System.Nullable`1[System.DateTime]' và 'System.Nullable`1[System.DateTimeOffset]'

In lại 作者:行者123 更新时间:2023-12-02 01:01:05 33 4
mua khóa gpt4 Nike

我正在尝试创建 Odata 端点,但每当我尝试执行任何涉及日期的查询时都会收到此错误。

我在下面的非常简单示例中重新创建了它。

数据库表

Database table

EDMX(片段)


































người mẫu

public partial class Person
{
[Key]public int ID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public System.DateTime DOB { get; set; }
}

Controller

public class PersonController : ODataController
{
private DataWarehouseServiceContext db = new DataWarehouseServiceContext();

private bool PersonExists(int key)
{
return db.Persons.Any(p => p.ID == key);
}

[EnableQuery]
public IQueryable Get()
{
return db.Persons;
}

protected override void Dispose(bool disposing)
{
db.Dispose();
base.Dispose(disposing);
}
}

查询

http://localhost:53205/OData/Person?$top=20&$filter=DOB eq 1972-11-20T00:00:00.000Z
http://localhost:53205/OData/Person?$top=20&$filter=DOB lt 1972-11-20T00:00:00.000Z

vân vân.

所有失败并显示以下行的消息:-

The query specified in the URI is not valid. The binary operator LessThan is not defined for the types 'System.Nullable`1[System.DateTime]' and 'System.Nullable`1[System.DateTimeOffset]'.

有人能帮忙吗?

1 Câu trả lời

这里的问题是,虽然 Microsoft 有 partly添加了 DateTime 支持(see comments),OData V4 不包括 DateTime 作为原始类型。这意味着您的过滤器仍然需要使用 DateTimeOffset。

虽然不理想,但将 DateTime 转换为 DateTimeOffset 似乎可以解决问题。

/OData/Person?$top=20&$filter=cast(DOB,'Edm.DateTimeOffset') eq 1972-11-20T00:00:00.000Z

关于.net - 二元运算符 LessThan 没有为类型 'System.Nullable` 1[System.DateTime ]' and ' System.Nullable`1[System.DateTimeOffset]' 定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28586797/

33 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com