我有一个Product
s List<Product> productList
的列表,其中:
public class Product
{
int ProductId { get; set; }
decimal Price { get; set; }
}
如何检查productList
Product
与[{1}}的所有ProductId
是否也具有相同的Price
?
我发现这有效:
bool result = productCheckList.GroupBy(p => p.ProductId).Any(gr =>
gr.Distinct().ToList().Count > 1)`;
但我也想知道一个是不相似的,哪个不是。
所以,当我有一个像这样的列表时:
var list = new List<Product>
list.Add(new Product { ProductId = 1, Price = 2m }
list.Add(new Product { ProductId = 1, Price = 1m }
我希望方法返回false,并显示ProductId = 1.
答案 0 :(得分:2)
这些群组包含产品,而不是产品的价格,因此您需要了解价格:
bool result =
productCheckList.GroupBy(p => p.ProductId)
.Any(gr => gr.Select(pr => pr.Price).Distinct().Count() > 1);
获取价格不同的产品组:
List<IGrouping<int, Product>> result =
productCheckList.GroupBy(p => p.ProductId)
.Where(gr => gr.Select(pr => pr.Price).Distinct().Count() > 1)
.ToList();