C# 逻辑练习


highlight: arta

theme: smartblue

需求

例:现有一数据表存储筛选规则,如下表

| 年龄 | 性别 | 负责人 |
| --- | --- | --- | | 大于20 | 男 | 张三 | | 小于20 | 男 | 李四 | | 大于20 | 女 | 王五 |

根据筛选条件,选择负责人,若后期新增或修改筛选规则,要求不能和之前重复

如添加下面条件,则符合规则

| 年龄 | 性别 | 负责人 |
| --- | --- | --- | | 小于20 | 女 | 赵六 |

若添加下面条件,则不符合规则,因为与第一条数据的筛选条件冲突

| 年龄 | 性别 | 负责人 |
| --- | --- | --- | | 大于20 | 男 | 赵六 |

逻辑说明

创建实体类

假设有4个筛选条件,分别抽象为F1,F2,F3,F4

image.png

筛选规则说明

并且可取的值只能为三种: 1. 数字(表示该条件对应的id) 2. ALL (不进行筛选) 3. ELSE (若所有筛选条件没有命中,则选择该条件)

初始化数据:

image.png

假设数据库存放三条筛选规则:

第一条:

| F1 | F2 | F3 | F4 | ID | | --- | --- | --- | --- | --- | | 1,2,3,4 | 2,3,4 | ALL | ALL | 1 |

一共有 4 * 3 = 12种条件,此时若符合则让ID为1的用户处理,该12种分别是:

image.png

image.png

image.png

第二条:

| F1 | F2 | F3 | F4 | ID | | --- | --- | --- | --- | --- | | ALL | 2,3,4 | ALL | ALL | 2 |

一共有 3 种条件,此时若符合则让ID为2的用户处理,分别是:

image.png

第二条:

| F1 | F2 | F3 | F4 | ID | | --- | --- | --- | --- | --- | | ELSE | ELSE | ELSE | ELSE | 3 |

若上述条件都没有命中,则让ID为3的用户处理

image.png

新增筛选条件

在 新增的数据与数据库中内容重复 的条件下

如新增一条筛选规则,让id为4的用户处理

image.png

此时数据重复,将会报错并返回重复信息,以下是重复信息

image.png

在 新增的数据与数据库中内容不重复 的条件下

如新增一条不重复的筛选规则,让id为4的用户处理

image.png

此时由于没有重复信息,将不会返回重复列表

image.png

修改筛选条件

分别定义before和after,分别代表要修改的数据,和要修改后的数据

要求修改后的规则,不能与现有规则冲突

image.png

在 修改后的数据与已有内容重复 的条件下

例如修改后的条件与第一行内容重复,要求返回重复的条件列表

image.png

image.png

在 修改后的数据与已有内容不重复 的条件下

当修改后后的条件不与现有的冲突时,则可正常修改

image.png

代码实现

select: 模拟权限管理系统 (gitee.com)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值