在 foreach c# 中更新 foreach
Update foreach in foreach c#
显示的代码片段会将第一个列表中的每个元素与第二个列表中的一个元素进行比较。但是当内部 foreach 完成时,上面的 foreach 重新进入并且图像在两个列表中抛出相同的 guid。
我怎样才能让它不这样做?
var listDetail = await _repo.GalleryDetail.GetAllAsync(a => a.GalleryId == request.Id);
request.GalleryDetails.ToList().ForEach(a =>
{
if (a.File == null)
{
foreach (var item in listDetail)
{
a.Image = item.Image;
}
}
else
{
foreach (var item in listDetail)
{
if (item.Image != null && item.Image != "True")
item.Image = a.File.DeleteFtp(url: item.Image.Substring(7),
cdn).ToString();
}
a.Image = a.File.UploadFtp("GalleryDetail", cdn);
}
});
这会覆盖 listDetail
中的每个项目 a.Image
,因此您会得到最后的 Image
:
foreach (var item in listDetail)
{
a.Image = item.Image;
}
因为你有一个 Id
属性,我建议用它来同步:
foreach (var item in listDetail)
{
if (item.Id == a.Id)
{
a.Image = item.Image;
break;
}
}
我添加了一个 break;
以便您在找到匹配项后立即跳出循环。
显示的代码片段会将第一个列表中的每个元素与第二个列表中的一个元素进行比较。但是当内部 foreach 完成时,上面的 foreach 重新进入并且图像在两个列表中抛出相同的 guid。 我怎样才能让它不这样做?
var listDetail = await _repo.GalleryDetail.GetAllAsync(a => a.GalleryId == request.Id);
request.GalleryDetails.ToList().ForEach(a =>
{
if (a.File == null)
{
foreach (var item in listDetail)
{
a.Image = item.Image;
}
}
else
{
foreach (var item in listDetail)
{
if (item.Image != null && item.Image != "True")
item.Image = a.File.DeleteFtp(url: item.Image.Substring(7),
cdn).ToString();
}
a.Image = a.File.UploadFtp("GalleryDetail", cdn);
}
});
这会覆盖 listDetail
中的每个项目 a.Image
,因此您会得到最后的 Image
:
foreach (var item in listDetail)
{
a.Image = item.Image;
}
因为你有一个 Id
属性,我建议用它来同步:
foreach (var item in listDetail)
{
if (item.Id == a.Id)
{
a.Image = item.Image;
break;
}
}
我添加了一个 break;
以便您在找到匹配项后立即跳出循环。