当前位置: 首页 > article >正文

C# 动态组合判断条件对数据进行筛选

 一、设计背景

  工作上需求开发一个文本处理软件,我要在界面上编辑文本筛选条件,这就需要动态判断每一行文本数据。我首先是将单行文本根据空格分割成了几十个子串,然后对子串进行条件判断。一开始设想的动态组合判断条件,然后一行一行的判断数据。但能够实现的方法是完整的数据在动态组合的判断条件序列中依次过滤,最后给出一个过滤后的结果。

二、技术实现思考

  我要实现的要求如下:

  1. 有效数据分割后子串数量应该大于13个
  2. 有效数据行StringArray[5]转换成int后要大于3
  3. 只要StringArray[6]等于“02”的数据

 其中动态判断条件的方式为:创建了一个IEnumerable<string[]>类型的变量query,并将其初始化为listOfStringArrays。然后,我们依次调用了Where方法来应用每个筛选条件每次调用Where都会返回一个新的IEnumerable<string[]>,它表示应用当前条件后的结果集。最后,我们将最终的IEnumerable<string[]>转换为List<string[]>。

  代码实现示例:

using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main()
    {
        // 示例数据
        List<string[]> listOfStringArrays = /* ...(同前)... */;

        // 初始的IEnumerable<string[]>
        IEnumerable<string[]> query = listOfStringArrays;

        // 逐步应用筛选条件
        query = query.Where(array => array.Length > 6); // 确保数组有足够的元素
        query = query.Where(array => int.TryParse(array[5], out int number) && number > 5); // 尝试将string[5]转换为int并检查是否大于5
        query = query.Where(array => array[6] == "02"); // 检查string[6]是否等于"02"

        // 将最终的IEnumerable<string[]>转换为List<string[]>
        var filteredList = query.ToList();

        // 输出筛选后的结果
        foreach (var array in filteredList)
        {
            Console.WriteLine(string.Join(", ", array));
        }
    }
}

三、个人总结

  虽然这种方法在代码上看起来更加冗长但允许逐步构建和测试查询的每个部分,这在处理复杂查询时非常有用。此外,如果需要在不同的上下文中重用某些筛选条件,还可以将它们封装到单独的函数中,并在需要时调用这些函数。

  后期可能还会接着完善,先把已经实现的代码和思路写在这里。


http://www.kler.cn/a/446352.html

相关文章:

  • 计算机网络之多路转接epoll
  • EasyExcel 导出文件
  • go-zero(十五)缓存实践:分页列表
  • 基于SpringBoot+Vue实现的个人备忘录系统
  • Android Vendor Overlay机制
  • 游戏何如防抓包
  • 大厂 Java 架构师面试题全解析
  • 【人工智能数学基础篇】——深入详解矩阵与向量运算及矩阵分解技术,打牢人工智能知识基础
  • OpenHarmony-4.HDI 框架
  • Github 2024-12-21 Rust开源项目日报 Top10
  • react websocket 全局访问和响应
  • Flink CDC 生产环境常用参数总结
  • 解决 Jenkins 克隆 GitHub 仓库时的 SSH 公钥认证问题
  • DC-9笔记
  • GitHub Copilot 现在可以免费使用了!
  • Leetcode Hot 100 【二叉树】104. 二叉树的最大深度
  • Docker 安装 禅道-21.2版本-外部数据库模式
  • 【day09】面向对象——静态成员和可变参数
  • 接口测试-Fidder及jmeter使用
  • JetBrains IDEA 2024 在使用 lombok 后构建失败/编译失败解决方案
  • Swin transformer 论文阅读记录 代码分析
  • 在树莓派 Pico 上运行 AWTK
  • WPF DataTemplate 数据模板
  • wordpress调用指定分类ID下 相同标签的内容
  • 日本IT行业|分享实用的开发语言及框架
  • 电商环境下的财务ERP系统架构