我试图在 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()
});