如何将此 Linq 转换为 lambda 表达式(介绍在线转换器)

问题描述 投票:0回答:1

您知道任何 软件在线 Web 应用程序 或 Visual Studio 中的 工具 可以执行此转换吗?

请有人帮助我,我无法转换这个复合体(像这样的 Linq : From x in UserRoleid Select x ...Where ...

        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();

例如:

context.table.Where(a => a.FK.ID == b.Number).Sum(a => a.sumPrice)
=====To=This=====>
(from a in context.table where a.FK.ID == b.Number select a.sumPrice).Sum()
c# linq lambda
1个回答
0
投票

我不知道有任何工具可以做到这一点。另外,由于您没有给出确切的模型,我假设您有这些模型

public class UserRole
{
    public int UserRoleId { get; set; }
    public int UserId { get; set; }
    public int[] RoleIds { get; set; }
}

public class Permission
{
    public int RoleId { get; set; }
    public string ActionFullName { get; set; }
}

那么你的合成糖就会像

   var result = (from userRole in userRoles
       select new
       {
           userRole.UserId,
           SomeTuple = (from actionFullName in actionFullNames
               select new
               {
                   ActionFullName = actionFullName,
                   IsMatch = (from permission in permissions
                       where userRole.RoleIds.Contains(permission.RoleId) &&
                             permission.ActionFullName.Equals(actionFullName,
                                 StringComparison.OrdinalIgnoreCase)
                              select permission).Any()
               }).ToArray()
       }).ToArray();

我认为我们不能将 Any() 转换为语法糖

© www.soinside.com 2019 - 2024. All rights reserved.