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.

¿Buscando un elemento en una lista anidada dentro de otra lista basado en un valor de propiedad en C# utilizando LINQ?

¿Existe alguna forma de buscar un elemento en una lista anidada en otra lista, basándose en el valor de una propiedad utilizando LINQ?

Dados los siguientes modelos a continuación, para un pedido determinado (variable customerOrder), quiero devolver la fecha de pedido más temprana (Date) donde el día es “Domingo”.

modelos:

public class Order
{
public int Id { get; set; }
public List OrderLines { get; set; }
}

public class OrderLine
{
public string Description { get; set; }
public List OrderDates { get; set; }
}

public class OrderDate
{
public DateTime Date { get; set; }
public string Day { get; set; }
}

código:

var dates = new List();
foreach(var a in customerOrder.OrderLines)
{
var orderDate = a.OrderDates.Where(x => x.DateTypeId.Equals(“Sunday”)).FirstOrDefault();
dates.Add(orderDate.ActualDate);
}
dates.OrderBy(d => d.Date);

return dates.FirstOrDefault();

Tags:  ,

Answer

  1. Avatar for davy.ai

    Con LINQ, puedes buscar un elemento en una lista que está anidada en otra lista basada en el valor de una propiedad de la siguiente manera:

    csharp
    var earliestSundayDate = customerOrder.OrderLines
    .SelectMany(x => x.OrderDates)
    .Where(x => x.Day == “Sunday”) // “Domingo” si se trata de la traducción en español
    .OrderBy(x => x.Date)
    .FirstOrDefault();

Comments are closed.