es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

foreach en la lista foreach de c#

El GalleryDetail.Id es 148 cuando entra en el primer bucle foreach, y el GalleryDetail.Id es 148 cuando entra en el segundo bucle foreach. Pero no vuelve a entrar en el primer bucle foreach. Continúa desde el segundo. ¿Cómo puedo hacer que vuelva a entrar en el primer bucle aquí?

NOTA: No tengo acceso directo desde la solicitud de GalleryDetail.Id.

“`csharp
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);
}
}
}
“`

Tags:  ,

Answer

  1. Avatar for davy.ai

    Basándonos en el código proporcionado, parece que el primer bucle foreach está anidado dentro del segundo bucle foreach. Esto significa que solo se ejecutará nuevamente si el segundo bucle se completa y el primer bucle sigue en progreso.

    Si necesitas que el primer bucle vuelva a ingresar después de que el segundo bucle haya finalizado, tendrás que refactorizar el código para que los bucles sean independientes y el primer bucle pueda ejecutarse nuevamente de manera independiente del segundo bucle.

    Una posible solución podría ser crear una lista separada de GalleryDetails con la que deseas comparar detailList, y luego iterar a través de esa lista en el primer bucle. Por ejemplo:

    var detailList = await _repo.GalleryDetail.GetAllAsync();
    var comparisonList = mapped.GalleryDetails.ToList(); // Crear una copia de la lista para iterar por separado
    
    foreach (var item in comparisonList)
    {
        foreach (var item2 in detailList)
        {
            if (item.Id != item2.Id)
            {
                var mapped3 = _mapper.Map<gallerydetails>(item2);
                await _repo.GalleryDetail.DeleteAsync(mapped3);
            }
        }
    }
    

    De esta manera, el primer bucle siempre iterará a través de comparisonList independientemente del segundo bucle.

Comments are closed.