我试图在 Lambda 表达式中编写以下 Linq(查询样式),以便我可以链接并使我的代码更紧凑:

var result = from p1 in defaults
             join p2 in get on p1.PermissionName equals p2.PermissionName
             into joined
             select new
             {
                 PermissionName = p1.PermissionName,
                 Permission = joined.Select(e => e.Permission == null ? false : true)
                                    .SingleOrDefault()
             };

我只能走到这一步:
var result = defaults.Join(get, defaultKey =>
                          defaultKey.PermissionName, getKey =>
                          getKey.PermissionName, (a, b) => new
                          {
                              PermissionName = a.PermissionName,
                              Permission = b.Permission
                          });

如您所见,Join() 扩展方法没有提供获取 joined 集合的方法。
我也在网上搜索过,但找不到任何线索。请随时提出建议。

最佳答案

使用 GroupJoin

var result =
    defaults.GroupJoin(
        get,
        p1 => p1.PermissionName,
        p2 => p2.PermissionName,
        (p1, joined) =>
            new
            {
                PermissionName = p1.PermissionName,
                Permission = joined.Select(e => e.Permission != null)
                                   .SingleOrDefault()
            });

10-06 14:20