You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular请求中使用LINQ语法过滤数据报错:字符字面量必须仅含一个字符

问题解决:LINQ过滤器组合条件报错“character literal must contain exactly one character”

问题原因

你遇到的错误是因为查询解析器把单引号包裹的'Hide'识别成了字符字面量,而字符字面量要求只能包含单个字符,Hide是多字符文本,所以触发报错。单个条件时没有这个问题,是因为${currentCustomer}如果是数值类型,不需要引号包裹,不会触发字符字面量的校验。

解决方法

1. 将字符串常量的单引号替换为双引号

把过滤条件里的'Hide'改成双引号包裹的"Hide",让解析器将其识别为字符串而非字符:

const coreFilter = `permissions != null && permissions.Any(p => p.permissionLevel != "Hide" && p.areaIId == ${currentCustomer})`;

2. 处理变量的类型安全(可选但推荐)

如果currentCustomer是字符串类型,直接拼接会导致查询中缺少引号,可能引发新的类型错误。可以用JSON.stringify()自动添加正确的引号并处理转义:

const coreFilter = `permissions != null && permissions.Any(p => p.permissionLevel != "Hide" && p.areaIId == ${JSON.stringify(currentCustomer)})`;

内容的提问来源于stack exchange,提问作者Bartek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 10:23:11