繁体   English   中英

内部连接使用Lambda(LINQ)

[英]Inner Join Using Lambda (LINQ)

我试图在Lambda Expression中编写以下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()
            });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM