【发布时间】:2022-01-15 07:59:23
【问题描述】:
显示的代码 sn-p 会将第一个列表中的每个元素与第二个列表中的一个元素进行比较。但是当内部 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);
}
});
【问题讨论】:
-
你有什么问题?
-
第一个
foreach循环看起来很奇怪……在循环内部,变量a永远不会改变。Item每次迭代都会发生变化......所以在循环结束后a.Image不会简单地包含最后一个item?简单地抓取列表中的最后一项而不是分配a.Image大量值然后将它们丢弃不是更容易吗? -
由于我们不知道您真正想要做什么,除了“以不同的方式编写代码”之外,您希望我们如何为您提供解决方案?不要告诉我们你不想让你的代码做什么,而是告诉我们你想让它做什么
-
“我想更新数据库中的图像字段而不更改它。” ... ? …你有一个
foreach循环定义a…request.GalleryDetails.ToList().ForEach(a => ……在那个循环里面…如果a.File是null,你想发生什么?如果a.file不是null,你想发生什么? -
可能类似于
if(item.Id == a.Id){ a.Image = item.Image; }