You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Where谓词通过指定字符串列表筛选主从结构的detail.List?

实现主从记录集的参考号过滤逻辑

没问题,我来帮你搞定这个基于参考号列表筛选主从记录的需求!下面是具体的实现步骤和代码示例:

核心思路

我们要做的就是:先通过你的DAL方法拿到账单的查询集合,再用Where谓词筛选出明细集合中包含目标参考号的主记录。

完整代码示例

// 1. 定义你的目标参考号列表
var listToFilterFor = new [] { "2729113", "2732623", "2734483", "2735355", "2752260" };

// 2. 构造DAL方法需要的参数(根据你的业务需求补充filterCriteria内容)
var filterCriteria = new Dictionary<string, object>();
var operationGuid = "你的操作GUID值";

// 3. 获取账单的可查询集合
var billsQuery = await GetBills(filterCriteria, operationGuid);

// 4. 优化:如果参考号列表较大,转成HashSet提升Contains的查询性能
var referenceHashSet = new HashSet<string>(listToFilterFor);

// 5. 过滤出符合条件的主从记录
var filteredRecords = await billsQuery
    .Where(bill => bill.detail.List.Any(detailItem => referenceHashSet.Contains(detailItem.ReferenceNumber)))
    .ToListAsync();

关键细节说明

  • Any的作用:用Any来检查主记录的明细集合中是否存在匹配的参考号,这是判断主记录是否符合筛选条件的核心逻辑
  • 属性名替换:代码里的ReferenceNumber是假设的明细项参考号属性名,如果你的实际属性名不同,记得替换成对应字段
  • 性能优化:当参考号列表数据量较大时,把列表转成HashSet<string>可以让Contains操作从O(n)变成O(1),大幅提升查询效率
  • 异步处理:因为GetBills和ToListAsync都是异步方法,记得全程用await处理异步操作,避免阻塞线程

内容的提问来源于stack exchange,提问作者DoomerDGR8

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:39:40