如何用C# Linq筛选包含指定itemApplicationId的Item列表?
筛选包含指定子元素的Item列表
核心实现(Java 8+ Stream API)
最简洁清晰的实现方式是利用Java Stream API的过滤与匹配能力,通过链式调用完成需求:
import java.util.List; import java.util.stream.Collectors; // 假设已有Item和ItemApplication实体类,且包含对应getter方法 List<Item> filteredItems = items.stream() .filter(item -> item.getItemApplications().stream() .anyMatch(app -> app.getItemApplicationId() == 5)) .collect(Collectors.toList());
代码说明
items.stream():将原始Item列表转为流,开启流式操作filter():对流中每个Item做条件筛选,仅保留符合要求的元素- 内层
item.getItemApplications().stream().anyMatch(...):检查当前Item的子列表中,是否存在任意一个itemApplicationId等于5的元素,只要有一个符合就返回true
- 内层
collect(Collectors.toList()):将过滤后的流转换回List<Item>类型,得到最终结果
示例验证
针对你提供的输入数据:
{"items": [ {"itemId" : 1, "itemApplications": [{"itemApplicationId": 7,"name": "application7"},{"itemApplicationId": 4,"name": "application4"}]}, {"itemId" : 2, "itemApplications": [{"itemApplicationId": 3,"name": "application3"},{"itemApplicationId": 5,"name": "application5"}]} ]}
执行上述代码后,会精准筛选出itemId为2的Item对象,与你期望的输出完全一致。
内容的提问来源于stack exchange,提问作者basicavocado
相关产品推荐
相关产品推荐

