如何检查在具有两个属性的对象列表中,具有一个相等属性的所有对象是否也具有相同的其他属性

本文关键字:属性 对象 检查 有一个 其他 具有一 是否 两个 何检查 列表 | 更新日期: 2023-09-27 18:15:14

我有一个ProductList<Product> productList的列表,其中:

public class Product
{
     int ProductId { get; set; }
     decimal Price { get; set; }
}

如何检查在此productList中所有Product s与ProductId也具有相同的Price ?

我发现这是有效的:

bool result = productCheckList.GroupBy(p => p.ProductId).Any(gr => 
                     gr.Distinct().ToList().Count > 1)`;

但我也想知道是否有一个不相似,哪些不是。

所以当我有一个像这样的List:

var list = new List<Product>
list.Add(new Product { ProductId = 1, Price = 2m }
list.Add(new Product { ProductId = 1, Price = 1m }

我希望方法返回false,并显示ProductId = 1

如何检查在具有两个属性的对象列表中,具有一个相等属性的所有对象是否也具有相同的其他属性

组包含产品,而不是产品的价格,因此您需要将价格取出:

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();
相关文章: