使用linq比较两个列表
我有两个清单,如图所示。我想要输出的是需要从列表2中删除列表1中不存在的状态,如下所示。谢谢使用linq比较两个列表,linq,list,Linq,List,我有两个清单,如图所示。我想要输出的是需要从列表2中删除列表1中不存在的状态,如下所示。谢谢 for(int i=0;i<list2.Count;i++) { if(!list1.Select(p=>p.State).Contains(list2[i].State)) { list2.RemoveAt(i); } } 您可以使用Intersect方法 var list1 = new [] {1,2,4}; var list2 = new []
for(int i=0;i<list2.Count;i++)
{
if(!list1.Select(p=>p.State).Contains(list2[i].State))
{
list2.RemoveAt(i);
}
}
您可以使用Intersect方法
var list1 = new [] {1,2,4};
var list2 = new [] {1,2,3};
list1.Intersect(list2);
这将得到结果1,2
或者,如果使用创建的类,则需要创建一个比较器来告诉intersect方法什么等于什么
var productList1 = new List<Product>();
productList1.Add(new Product { Code = 1, Name = "Pears" });
productList1.Add(new Product { Code = 2, Name = "Rasbries" });
productList1.Add(new Product { Code = 3, Name = "Apple" });
var productList2 = new List<Product>();
productList2.Add(new Product { Code = 1, Name = "Pears" });
productList2.Add(new Product { Code = 2, Name = "Rassbeyreys" });
productList2.Add(new Product { Code = 4, Name = "Avocado" });
var result = productList1.Intersect(productList2, new ProductComparer());
public class ProductComparer : IEqualityComparer<Product>
{
public bool Equals(Product x, Product y)
{
return x.Code == y.Code;
}
public int GetHashCode(Product obj)
{
return obj.Code;
}
}
var productList1=new List();
Add(新产品{Code=1,Name=“Pears”});
productList1.Add(新产品{Code=2,Name=“Rasbries”});
productList1.Add(新产品{Code=3,Name=“Apple”});
var productList2=新列表();
productList2.Add(新产品{Code=1,Name=“Pears”});
productList2.Add(新产品{Code=2,Name=“Rassbeyreys”});
productList2.Add(新产品{Code=4,Name=“Avocado”});
var result=productList1.Intersect(productList2,new ProductComparer());
公共类产品比较程序:IEqualityComparer
{
公共布尔等于(乘积x,乘积y)
{
返回x.代码==y.代码;
}
public int GetHashCode(产品对象)
{
返回目标代码;
}
}
这是典型的内部联接,因此可以使用LINQ联接方法:
var list3 = list2.Join(list1, x => x.State, y => y.State, (x, y) => x)
.ToList();
当你喜欢画画的时候,StackOverflow并不是为了“给我写代码做这个和那个”。@Konrad Kokosa:对不起,我是linq的初学者,所以我不知道。thatsy正在寻求帮助如果您认为这是答案,请选择:-)
var list3 = list2.Join(list1, x => x.State, y => y.State, (x, y) => x)
.ToList();