đang vật lộn với điều này trong một thời gian.Xóa tất cả các mục khỏi Danh sách <T> nếu các biến thể của T xảy ra
Tôi đang nhúng ngón chân vào thế giới WebAPI và tôi có Danh sách có thể chứa các sản phẩm có cùng tên nhưng giá khác nhau. Những gì tôi cần làm là xóa tất cả các tham chiếu vào sản phẩm là các biến thể về giá xảy ra.
ví dụ:
name = "cornflakes" Giá = "1.99M"
name = "cornflakes" Giá = "1.89M"
name = "Krispies Rice" Giá = "2.09M"
name = "cornflakes" Giá = " 2.09M "
Không có bột ngô sẽ xuất hiện trong danh sách cuối cùng của tôi.
Tôi đã viết hàng loạt nhưng đã xóa sản phẩm quá sớm và tôi không chắc chắn mình nên xóa chúng ở đâu.
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;
}
Mọi trợ giúp sẽ được đánh giá cao.
Lưu ý: các loại ngũ cốc khác có sẵn
@MarkByers Tôi chắc chắn rằng điều đó sẽ không bao giờ xảy ra. – Brett