繁体   English   中英

c# lambda 表达式根据不同列表中的给定条件从列表中删除项目

[英]c# lambda expression to remove items from a list based on given conditions in a different list

假设我有一个IList<int> ProductIds我正在传递给一个非常慢的 web 服务。 该调用将如下所示:

var WebServiceResponse = client.SomeCall(ProductIds);

整数列表将包含给定页面的所有产品 ID。

我有另一个列表,比如IList<Product>其中 Product 包含一个int ProductId成员属性。 我想调用我的 web 服务,但在此之前,我想从 ProductIds 中删除所有在我的其他列表中具有匹配 ProductId 的产品的项目。 是否有一个班轮可以为我做到这一点,还是我必须运行一个循环? 我已经尝试了各种各样的东西,但没有任何编译。 我对 lambda 表达式还是新手,所以希望这个是蛋糕。

var list = new List<Product>(); //or wherever you get it from
var otherIDs = list.Select(p => p.ProductId);
var WebServiceResponse = client.SomeCall(ProductIds.Where(i => !otherIDs.Contains(i)); 

如果您的 web 服务专门采用 List 或 IList,则需要在末尾添加一个 ToList:

var WebServiceResponse = client.SomeCall(ProductIds.Where(i => !otherIDs.Contains(i).ToList()); 
var excluded = ListA.Where(p=>!ListB.Contains(pb=>pb.Id == p.Id));

如果 ListB 只是 Id,可能会有点不同,那么它将是 just.ListB.Contains(p.Id)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM