Partage
  • Partager sur Facebook
  • Partager sur Twitter

for each en expression lambda c#

    3 octobre 2018 à 18:41:21

    Bonjour,

    j'essaye de transformer le code suivant en une seule expression lambda sans utiluser le foreach et si possible d'améliorer la requête

    public static IEnumerable<Sale> FilterProducts(IEnumerable<Sale> sales, string status)
    {
       if (sales == null)
        {
    	return new List<Sale>();
        }
    
    	var lstSales = new List<Sale>();
    	foreach (var sale in sales)
    	{
    	  sale.Products?.RemoveAll(q => q.Status == status);
    	  lstSales.Add(sale);
    	}
    
        return lstSales ;
     }

    Fonctionnellement:

    Je dois recupérer tout les projets, et pour chaque produit je dois lui recupérer sa liste de produit dont le statut de ce dernier est différent de "status"

    Actuellement je supprime pour chaque projet, les produit dont le status est égale à "status"

    Merci d'avance pour votre aide.

    -
    Edité par mariche 3 octobre 2018 à 18:43:21

    • Partager sur Facebook
    • Partager sur Twitter
      12 octobre 2018 à 13:02:18

      Bonjour,

      Je n'ai pas testé l'expression suivante, mais elle devrait fonctionner

      sales.GroupBy(x => x).Select(s => new
      {
          Sale = s.Key,
          Products = s.Where(x => x.Status == status)
      }).ToList()

      Cette requête te retourne une liste de type anonyme ayant pour propriétés Sale et Products qui correspondent respectivement à ton projet et ta liste de produits filtrés sur le status passé en paramètre.

      A savoir que Products est du type IEnumerable.

      -
      Edité par Kotus 12 octobre 2018 à 13:07:31

      • Partager sur Facebook
      • Partager sur Twitter

      for each en expression lambda c#

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown