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

使用System.Linq.Dynamic分组时Select子句遇lambda转string错误

解决System.Linq.Dynamic中Select子句的Lambda转换错误

这个问题的核心是你混淆了原生Linq的Select方法和System.Linq.Dynamic扩展的Select方法的用法——Dynamic版本的Select不接受普通Lambda表达式,它要求传入一个字符串形式的动态表达式。

错误原因分析

你写的.[Select](Function(grp) grp.ToList())是原生Linq的写法,但System.Linq.Dynamic的Select方法签名是IQueryable Select(string selector),它期望的是字符串格式的表达式(比如"ToList()"),而不是Func<DynamicGrouping, List<YourType>>这样的委托,所以编译器会抛出"lambda expression cannot be converted to 'string'"的错误。

修正后的代码

只需要把Lambda替换成对应的动态表达式字符串即可:

Dim lstGroupedFilterNew = lstDataSource _
    .GroupBy("New (Unit_ID, Itinerary_ID, Driver_ID)", "grp") _
    .[Select]("ToList()") _
    .ToList()

进阶用法(如果需要自定义分组结果)

如果你想把分组转换成包含键和子列表的自定义对象,也可以直接在字符串表达式里定义:

Dim lstGroupedFilterNew = lstDataSource _
    .GroupBy("New (Unit_ID, Itinerary_ID, Driver_ID)", "grp") _
    .[Select]("New { GroupKey = Key, Items = ToList() }") _
    .ToList()

这样就能正确生成嵌套的列表结构,同时符合System.Linq.Dynamic的语法要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:19:27