如何检查在具有两个属性的对象列表中,具有一个相等属性的所有对象是否也具有相同的其他属性
本文关键字:属性 对象 检查 有一个 其他 具有一 是否 两个 何检查 列表 | 更新日期: 2023-09-27 18:15:14
我有一个Product
和List<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();