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

news/2024/12/23 19:36:19/

 一、设计背景

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

二、技术实现思考

  我要实现的要求如下:

  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并检查是否大于5query = 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.ppmy.cn/news/1557545.html

相关文章

php面对对象的基础知识

php面对对象的基础知识 程序开发&#xff1a;面向过程vs面向对象 面向过程面向过程是一种以“整体事件”为中心的编程思想&#xff0c;编程的时候把解决问题的步骤分析出来&#xff0c;然后用函数把这些步骤实现&#xff0c;在一步一步的具体步骤中再按顺序调用函数。 面向对…

Unity Apple Vision Pro 开发教程:物体识别跟踪

Spatial XR 开发者社区官网&#xff1a;SpatialXR 社区 开发流程与原理&#xff1a;Apple Vision Pro 物体识别跟踪原理与开发流程【Unity Apple Vision Pro 开发系列教程】 PolySpatial 物体跟踪官方样例讲解&#xff1a;Unity Apple Vision Pro 开发教程&#xff1a;物体识别…

SQL注入(SQL lnjection Base)21

SQL注入&#xff08;SQL lnjection Base&#xff09; sql-labs靶场的搭建 GitHub - Audi-1/sqli-labs: SQLI labs to test error based, Blind boolean based, Time based.SQLI labs to test error based, Blind boolean based, Time based. - Audi-1/sqli-labshttps://githu…

MFC/C++学习系列之简单记录12——文件操作

MFC/C学习系列之简单记录12——文件操作 前言文件操作处理具体使用CFileDialog类 CFile类和CStdioFile类错误总结 前言 学习MFC的文件处理操作&#xff01; 文件操作处理 CFileDialog类&#xff1a;对话框类&#xff0c;获取选择的文件信息。CFile类&#xff1a;抽象类&#…

Redis生产实践中相关疑问记录

1. Redis相关疑问 1.1. redis内存使用率100% 就等同于redis不可用吗&#xff1f; 正常使用情况下&#xff0c;不是。 redis有【缓存淘汰机制】&#xff0c;Redis 在内存使用率达到 100% 时不会直接崩溃。相反&#xff0c;它依赖内存淘汰策略来释放内存&#xff0c;确保系统的…

数据结构---------二叉树前序遍历中序遍历后序遍历

以下是用C语言实现二叉树的前序遍历、中序遍历和后序遍历的代码示例&#xff0c;包括递归和非递归&#xff08;借助栈实现&#xff09;两种方式&#xff1a; 1. 二叉树节点结构体定义 #include <stdio.h> #include <stdlib.h>// 二叉树节点结构体 typedef struct…

了解 SpringMVC 请求流程

文章目录 1. Spring 基础 - SpringMVC 请求流程1.1 引入1.2 什么是 MVC1.3 什么是 Spring MVC1.4 请求流程核心架构的具体流程步骤补充 1.5 案例**Maven 包引入****业务代码的编写**DaoServiceControllerwebapp 下的 web.xmlspringmvc.xmlJSP 视图 2. Spring 进阶 - Dispatcher…

39.在 Vue3 中使用 OpenLayers 导出 GeoJSON 文件及详解 GEOJSON 格式

一、引言 在 Web 地图开发领域&#xff0c;Vue3 作为一款流行的前端框架&#xff0c;结合强大的 OpenLayers 地图库&#xff0c;能够实现丰富多样的地图功能。其中&#xff0c;将地图数据以 GeoJSON 格式导出是一项常见且实用的需求&#xff0c;本文将深入探讨如何在 Vue3 环境…