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.

Copiar el valor de un elemento de una lista a otra en c#

NET, necesito copiar los valores de un elemento de un objeto en una lista en otra lista, esto es lo que tengo:

List<Business> businesses; // desde donde quiero copiar el valor
PaginationResult<Business> paginatedBusinesses // contiene la lista final

El tipo de resultado paginado tiene una lista dentro de él:

public class PaginationResult<T>
{
    public PaginationResult();

    //
    // Resumen:
    //     Esta es la colección de elementos paginados
    public List<T> Items { get; set; }
}

El objeto Business contiene estos atributos:

public class Business : IAggregateRoot
{
    /// <summary>
    /// Identificador único del negocio
    /// </summary>
    public Guid Id { get; set; }

    ...

    /// <summary>
    /// La marca de tiempo de época en la que este usuario accedió por última vez a este negocio.
    /// </summary>
    public long? LastAccessed { get; set; }
}

Aquí he convertido los elementos de la lista paginatedBusiness en la clase Business:

var paginatedBusinesses = results.ConvertItems<Business>((i) => i.ToDomainEntity());

Necesito copiar los valores LastAccessed de la lista businesses en paginatedBusinesses.Items, buscando por el Id (ambas listas tienen el mismo valor de Id pero en la primera tenemos el valor de LastAccessed y en la lista final no lo tenemos). ¿Cómo puedo hacerlo? Intenté algo como esto:

paginatedBusinesses.Items.AddRange(businesses.Select(i => i.LastAccessed));

Pero no funciona, ¿cómo puedo ponerlo en el objeto correspondiente (el que tiene el mismo Id)? También intenté con un bucle foreach pero no estoy seguro de cómo hacerlo. ¿Algún idea? ¡Gracias!

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para copiar los valores de LastAccessed de la lista “businesses” en “paginatedBusinesses.Items” basándose en Ids coincidentes, puedes utilizar un bucle “foreach” para iterar sobre “paginatedBusinesses.Items” y encontrar el objeto “Business” correspondiente de la lista “businesses” utilizando el Id. Una vez que tienes el objeto “Business” coincidente, puedes establecer su propiedad “LastAccessed” al valor de la lista “businesses”.

    Aquí está el código para lograr esto:

    foreach (var item in paginatedBusinesses.Items)
    {
        var business = businesses.FirstOrDefault(b => b.Id == item.Id);
        if (business != null) // Se encontró un negocio coincidente
        {
            item.LastAccessed = business.LastAccessed;
        }
    }
    

    Este código recorre cada elemento en la lista “paginatedBusinesses.Items” e intenta encontrar un objeto “Business” coincidente en la lista “businesses” basado en el Id. Si se encuentra un objeto coincidente (“business != null”), establece la propiedad “LastAccessed” del “item” en el valor del objeto “business”.

    Ten en cuenta que si hay múltiples objetos “Business” con el mismo Id en la lista “businesses”, solo se utilizará el primero para actualizar el “item” correspondiente en “paginatedBusinesses.Items”. Si necesitas manejar este caso de manera diferente, puedes modificar el código en consecuencia.

Comments are closed.