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

如何去除字符串变量中的双引号,使其可用于C# Linq动态查询?

C# 动态LINQ字符串查询实现方案

完全可以实现该需求,但仅去除字符串内的双引号不足以让查询正常运行,原生LINQ的Where方法不直接接收字符串类型的筛选参数,你需要借助动态LINQ相关的能力完成该需求,具体实现步骤如下:

实现步骤

  • 第一步:安装NuGet包System.Linq.Dynamic.Core,该库提供了直接传入字符串作为查询条件的LINQ扩展方法
  • 第二步:调整字符串查询条件的格式,你原有写法里的x=>前缀在动态LINQ查询中不需要额外声明,仅保留条件部分即可,也可以将转义双引号替换为单引号简化写法

可运行示例代码

using System.Linq.Dynamic.Core;

// 写法1:直接写条件,使用转义双引号匹配你原有的写法
var filter = "name == \"Ammar\" && age == 12";
// 写法2:使用单引号包裹字符串值,无需转义,可读性更高
// var filter = "name == 'Ammar' && age == 12";

// 直接传入筛选字符串即可完成查询
list = list.Where(filter).ToList();

如果你要保留原有带x=>前缀的字符串变量,只需要做简单的字符串裁剪即可使用:

var variable = "x=>x.name==\"Ammar\" && x.age==12";
// 去除多余的lambda前缀和参数前缀
var processedFilter = variable.Replace("x=>", "").Replace("x.", "");
list = list.Where(processedFilter).ToList();

其他说明

如果你不想引入第三方库,也可以手动将字符串表达式编译为Expression<Func<T, bool>>类型的表达式树,不过该方案实现复杂度较高,普通业务场景下更推荐直接使用成熟的动态LINQ库处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 09:45:05