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

如何使用Linq根据邮编前缀列表过滤Address地址对象集合

LINQ实现Address列表按邮编前缀过滤方案

该需求完全可以通过LINQ实现,核心逻辑为Where遍历过滤+Any匹配前缀列表,具体实现如下:

前置依赖

需要先引入LINQ命名空间:

using System.Linq;

基础实现代码

// 1. 先获取强类型的Address数据源(如果DataSource本身已是强类型List<Address>可跳过Cast步骤)
List<Address> addresses = _pivotGrid.DataSource.Cast<Address>().ToList();
List<string> postCodes = // 你的缩写邮编列表实例

// 2. 执行过滤逻辑
List<Address> filteredAddresses = addresses
    .Where(addr => 
        // 先处理PostCode空值,避免触发空引用异常
        !string.IsNullOrEmpty(addr.PostCode)
        // 判断当前PostCode是否匹配任意邮编前缀
        && postCodes.Any(prefix => addr.PostCode.StartsWith(prefix))
    )
    .ToList();

可选适配(大小写不敏感匹配)

如果需要忽略邮编的大小写差异(例如ml4 3gh和前缀ML4也能正常匹配),可以调整StartsWith的匹配参数:

List<Address> filteredAddresses = addresses
    .Where(addr => 
        !string.IsNullOrEmpty(addr.PostCode)
        && postCodes.Any(prefix => addr.PostCode.StartsWith(prefix, StringComparison.OrdinalIgnoreCase))
    )
    .ToList();

逻辑说明

  • 外层Where方法逐个遍历所有Address对象,仅保留符合条件的条目
  • 前置空值判断避免了PostCode为null/空时调用StartsWith抛出的空引用异常
  • 内层Any方法遍历缩写邮编列表,只要PostCode以任意一个前缀开头就符合匹配规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 12:54:02