检测到类型不兼容的二元运算符。找到运算符类型“Equal”的操作数类型“Edm.Guid”和“Edm.String”。 OData 2.2

Posted

技术标签:

【中文标题】检测到类型不兼容的二元运算符。找到运算符类型“Equal”的操作数类型“Edm.Guid”和“Edm.String”。 OData 2.2【英文标题】:A binary operator with incompatible types was detected. Found operand types 'Edm.Guid' and 'Edm.String' for operator kind 'Equal'. OData 2.2 【发布时间】:2016-08-24 03:07:46 【问题描述】:

剑道滤镜

if ($.trim(DepartmentId))  $filter.push( field: "DepartmentId", operator: "eq", value: DepartmentId  ); 

型号

public System.Guid DepartmentId  get;  set; 

方法

[Queryable]
    public IQueryable<Employee> Get(ODataQueryOptions opts)
    
        EmployeeService.HrEmployeeServiceFacadeClient emp = new EmployeeService.HrEmployeeServiceFacadeClient();
        var response = emp.GetAll();
        List<Employee> result = JsonConvert.DeserializeObject<List<Employee>>(response.Result);
        var resultString = result.AsQueryable();

        return resultString;
    

我正在使用 OData 2.2

显示错误

检测到类型不兼容的二元运算符。找到运算符类型“Equal”的操作数类型“Edm.Guid”和“Edm.String”。

【问题讨论】:

【参考方案1】:

在 OData v2 中,文字 GUID 必须序列化为 guid'dddddddd-dddd-dddd-dddd-dddddddddddd',其中每个 d 代表一个十六进制数字。

【讨论】:

"'where' 条件无效。实体成员正在调用无效的属性或方法。", /AccountSet?$filter=AccountId eq guid'03a0a47b-e3a2-e311-9402-00155d104c22'

以上是关于检测到类型不兼容的二元运算符。找到运算符类型“Equal”的操作数类型“Edm.Guid”和“Edm.String”。 OData 2.2的主要内容,如果未能解决你的问题,请参考以下文章

odata 错误 - 检测到类型不兼容的运算符

在 Swift 中匹配数据类型

二元运算符“==”不能应用于“布尔”和“字符串?”类型的操作数对于 2020 年的 Swift [重复]

二元运算符 += 不能应用于类型的操作数 [关闭]

二元运算符'+'不能应用于'String'和'() -> String'类型的操作数

二元运算符 % 不能应用于 UInt32 和 int 类型的操作数