【发布时间】:2017-11-21 19:26:26
【问题描述】:
我正在学习 Linq,我有两个对象列表。我想将这些列表中的一个与另一个进行比较,以查看其中对象的所有属性是否都可以与另一个列表中的属性匹配。 因此,我为此提供了代码,但我想将其更改为 Linq 表达式。
var list1 = new List<Product>
{
new Product{SupplierId = 1,ProductName = "Name1"},
new Product{SupplierId = 2,ProductName = "Name2"},
new Product{SupplierId = 3,ProductName = "Name3"},
new Product{SupplierId = 4,ProductName = "Name4"}
};
var list2 = new List<Product>
{
new Product {SupplierId = 1,ProductName = "Name5"},
new Product {SupplierId = 4,ProductName = "Name6"}
};
private static bool CheckLists(List<Product> list1, List<Product> list2)
{
foreach (var product2 in list2)
{
bool result = false;
foreach (var product in list1)
{
if (product.SupplierId == product2.SupplierId)
{
result = true;
break;
}
}
if (!result)
{
return false;
}
}
return true;
}
我如何使用 LINQ 来做到这一点?
【问题讨论】:
-
有什么原因你没有使用
Contains? -
@NetMage 对于使用
Contains,他应该覆盖Equals -
为了更清楚起见,对于随后阅读此内容的任何人,正在检查的是 list2 中的所有项目是否都可以在 list1 中找到。