foreach 列表中的 foreach c#

foreach in foreach list c#

GalleryDetail.Id进入第一个foreach循环时为148GalleryDetail.Id进入第二个foreach时为148 =] 循环。但是它不会再次进入第一个 foreach 循环。它从第二个继续。我如何让它在这里重新进入第一个循环?

注意:我无法从 GalleryDetail.Id 请求直接访问。

var detailList = await _repo.GalleryDetail.GetAllAsync();

foreach (var item in mapped.GalleryDetails)
{
    foreach (var item2 in detailList)
    {
        if (item.Id != item2.Id)
        {
            var mapped3 = _mapper.Map<GalleryDetails>(item2);
            await _repo.GalleryDetail.DeleteAsync(mapped3);
        }
    }
}

这里没必要用2个循环,可以用LinQ代替。而且你不应该在 foreach 循环中留下异步删除,因为它会多次连接到你的数据库。示例:

var detailList = await _repo.GalleryDetail.GetAllAsync();
//Map the whole list
var detailListMapped = _mapper.Map<List<GalleryDetails>>(detailList);
//Use LinQ to find database items not in request
var deletedList = detailListMapped.Where(x => !mapped.GalleryDetails.Any(y => y.Id == x.Id)).ToList();
//Entity Framework have RemoveRange function, you should use it here
await _repo.GalleryDetail.RemoveRangeAsync(deletedList );