如何将Lambda表达式转换为LINQ语法?求转换工具及代码转换帮助
问题解答:Lambda与LINQ互转工具及表达式转换
一、Lambda表达式与LINQ语法互转工具
- Visual Studio内置重构:选中目标Lambda表达式或LINQ查询,右键选择「快速操作和重构」(快捷键
Ctrl+.),在弹出菜单中选择「转换为查询表达式」(Lambda转LINQ)或「转换为方法链式调用」(LINQ转Lambda)。大部分常规场景都能自动转换,复杂嵌套表达式可能需要手动微调。
二、指定Lambda表达式的LINQ语法转换
原Lambda表达式
var Result = userRoleIds.Select(s => (s.UserId, actionFullNames.Select(actionFullName => (actionFullName, permissions.Any(A => s.RoleIds.Contains(A.RoleId) && A.ActionFullName.Equals(actionFullName, StringComparison.OrdinalIgnoreCase)))) .ToArray())).ToArray();
转换后的LINQ查询语法
var Result = ( from s in userRoleIds select ( s.UserId, ( from actionFullName in actionFullNames select ( actionFullName, permissions.Any(A => s.RoleIds.Contains(A.RoleId) && A.ActionFullName.Equals(actionFullName, StringComparison.OrdinalIgnoreCase)) ) ).ToArray() ) ).ToArray();
转换说明:保持原表达式的嵌套结构与逻辑,用嵌套LINQ查询表达式替代链式Select调用,值元组、Any条件及ToArray()调用均与原代码完全一致。
内容的提问来源于stack exchange,提问作者YaSecu
相关产品推荐
相关产品推荐

