[英]EF .Net Core Enumerable.Concat not working
下面是我的代码
var dbClaimLink = this.Context.Set<ClaimLink>();
var claims = await DbSet
.Include(claim => claim.Parent)
.Include(link => link.ParentLinks)
.ToListAsync();
var newClaimLink = await dbClaimLink.ToListAsync();
var processedClaims = claims.Select(x =>
{
var claimLinks = x.ParentLinks;
if (!claimLinks.Any())
{
return x;
}
var hiddenParents = claimLinks.Select(p => claims.Find(t => t.Id == p.ClaimLinkId));
x.HiddenParents = hiddenParents;
return x;
});
foreach (var objClaim in processedClaims)
{
if (objClaim.Children == null)
objClaim.Children = new List<Claim>();
var lst = newClaimLink.Where(k=> k.ClaimLinkId == objClaim.Id).ToList();
if (lst.Any())
{
foreach (var item in lst)
{
IEnumerable<Claim> newChildren = claims.Where(p => p.Id == item.ClaimId);
objClaim.Children.Concat(newChildren);
}
}
}
它总是返回没有与新孩子连接的老孩子。 我想将那些新旧孩子设置在foreach循环的一侧串联
Concat
方法将返回具有两个值的新集合,并且不会更改原始集合。
Concat
将返回新对象-合并结果,因此您需要将其保存在某个地方: var result = objClaim.Children.Concat(newChildren);
Where
,仅在实现( ToArray
或foreach
调用)后才在原地执行: claims.Where(p => p.Id == item.ClaimId).ToArray()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.