ha estado luchando con esto por un tiempo.Eliminar todos los elementos de una lista <T> si ocurren variaciones de T
Estoy sumergiendo mi dedo del pie en el mundo de WebAPI y tengo una lista que puede contener productos con el mismo nombre pero precios diferentes. Lo que tengo que hacer es eliminar todas las referencias a un producto son variaciones en el precio.
por ejemplo.
name = "Corn Flakes" Precio = "1,99 metros"
name = "Corn Flakes" Precio = "1.89M"
name = "Rice Krispies" Precio = "2.09M"
name = "Corn Flakes" Precio = " 2.09M "
No cornflakes debería aparecer en mi lista final.
Tengo el grueso escrito pero está retirando los productos demasiado pronto y no estoy seguro de dónde debería eliminarlos.
public IEnumerable<Product> GetProductsByCategory(int Id)
{
List<Product> sourceProductList = products.Where(p => p.CategoryID == Id).ToList();
List<Product> tempProducts = new List<Product>();
List<Product> targetProductList = new List<Product>();
foreach (var product in sourceProductList)
{
bool isInTempList = tempProducts.Any(x => x.Name == product.Name);
if (!isInTempList)
{
tempProducts.Add(product);
}
else
{
Product tempProduct = product;
bool isPriceDifferent = tempProducts.Where(y => y.Name == tempProduct.Name).Any(y => y.Price != tempProduct.Price);
if (isPriceDifferent)
{
tempProducts.RemoveAll(p => p.Name == product.Name);
// too soon as I may have lots of products with the same name
// but need to remove based on product.Name
}
}
}
targetProductList.AddRange(tempProducts);
return targetProductList;
}
Cualquier ayuda sería muy apreciada.
Nota: otros cereales están disponibles
@MarkByers me han asegurado que nunca va a suceder. – Brett