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

如何在Dynamic Linq语法中筛选动态字段值不为Null的记录?

问题描述

需要根据动态选择的文化字段(Name_culture参数值可能为name_en、name_it等),筛选出对应字段值不为Null的记录。

使用固定字段的Linq查询可以正常工作:

.Where(i => i.name_it != null)

但使用Dynamic Linq的以下写法会报错:

.Where($"{Name_culture} != @0", null)

错误信息:

System.Linq.Dynamic.ParseExceptionNo property or field '0' exists in type 'ISO3166'

请问如何在Dynamic Linq语法中实现字符串与Null的比较?


解决方法

在Dynamic Linq里直接把null写进查询字符串即可,不需要通过@0传参。正确代码如下:

.Where($"{Name_culture} != null")

如果需要同时过滤掉空字符串(即字段值既不为Null也不为空),可以扩展为:

.Where($"{Name_culture} != null && {Name_culture} != \"\"")

报错原因说明

你之前的写法错误在于:Dynamic Linq会把@0解析为目标类型(ISO3166)的属性/字段名,而非参数占位符。因为你的类型里没有名为0的成员,所以抛出了解析异常。直接在查询表达式中使用null关键字是Dynamic Linq原生支持的语法,无需额外传递参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 14:15:33