【C#】List数据去重
系列文章
【C#】单号生成器(定义编号规则、流水号、产生业务单号)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/129129787
【C#】日期范围生成(构建本周开始、结束日期)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/129040663
【C#】数据实体类使用
本文链接:https://blog.csdn.net/youcheng_ge/article/details/128816638
【C#】单据审批流方案
本文链接:https://blog.csdn.net/youcheng_ge/article/details/128972545
【C#】二维码标签制作及打印(完整版)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/126884228
【C#】条码管理操作手册
本文链接:https://blog.csdn.net/youcheng_ge/article/details/126589496
【C#】WebAPI发布和IIS部署,及异常处理
本文链接:https://blog.csdn.net/youcheng_ge/article/details/126539836
【C#】提高编程效率,代码自动生成器
本文链接:https://blog.csdn.net/youcheng_ge/article/details/126890673
【C#】提高编程效率,Excel数据导入工具
本文链接:https://blog.csdn.net/youcheng_ge/article/details/126427323
【C#】Windows服务(Service)安装及启停方案
本文链接:https://blog.csdn.net/youcheng_ge/article/details/124053794
【C#】穿透Session隔离,服务调用外部程序(无窗体界面解决)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/124053033
【C#】任务计划实现,使用Quartz类
本文链接:https://blog.csdn.net/youcheng_ge/article/details/123667723
【C#】《周计划管理关于产前准备模块》解决方案20200203
本文链接:https://blog.csdn.net/youcheng_ge/article/details/122919543
【C#】项目中,源码解析的正则表达式
本文链接:https://blog.csdn.net/youcheng_ge/article/details/118337074
【C#】软件版本和文件MD5记录(XML操作)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/112513871
【C#】如何测试网络是否连通
本文链接:https://blog.csdn.net/youcheng_ge/article/details/110137288
【C#】打印解决方案(支持打印模板、条形码、二维码、图片)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/129415723
【Inno Setup】安装包制作,项目打包方案
本文链接:https://blog.csdn.net/youcheng_ge/article/details/123665633
文章目录
- 系列文章
- 前言
- 一、问题描述
- 二、解决方案
- 2.1 测试程序界面设计
- 三、软件开发(项目源码)
- 3.1 创建数据模型
- 3.2 测试方法
- 四、项目展示
- 五、资源链接
前言
我能抽象出整个世界,但是我不能抽象你。 想让你成为私有常量,这样外部函数就无法访问你。 又想让你成为全局常量,这样在我的整个生命周期都可以调用你。 可惜世上没有这样的常量,我也无法定义你,因为你在我心中是那么的具体。
哈喽大家好,本专栏为【项目实战】专栏,有别于【底层库】专栏,我们可以发现增加 了『问题描述』、『项目展示』章节,十分符合项目开发流程,让读者更加清楚项目解决的问题、以及产品能够达到的效果。本专栏收纳项目开发过程的解决方案,是我项目开发相对成熟、可靠方法的提炼,我将这些问题的解决思路梳理,撰写本文分享给大家,大家遇到类似问题,可按本文方案处理。
本专栏会持续更新,不断完善,专栏文章关联性较弱(文章之间依赖性较弱,没有阅读顺序)。大家有任何问题,可以私信我。如果您对本专栏感兴趣,欢迎关注吧,我将带你用最简洁的代码,实现复杂的功能。
·提示:本专栏为项目实战篇,未接触项目开发的同学可能理解困难,不推荐阅读。
一、问题描述
我们已经确定了大致的方向,与业务部门沟通,进一步确定标签需要支持以下目标:
①公司存在保密要求,标签不便显示产品信息,但特定人员可以看懂。
②编号要可以人工复核,双重保障,防止识别不出可以人工干预。
二、解决方案
2.1 测试程序界面设计
三、软件开发(项目源码)
3.1 创建数据模型
using System;
namespace MES_Client
{
/// </summary>
/// Model层 物料出入库表Model(以下代码由工具自动生成,有错误请反馈)
/// </summary>
public class 物料出入库表Model
{
public 物料出入库表Model() { }
public string 存货编码 { get; set; }
public decimal 数量 { get; set; }
}
}
using System;
namespace MES_Client
{
/// </summary>
/// Model层 钨条出入库表Model(以下代码由工具自动生成,有错误请反馈)
/// </summary>
public class 钨条出入库表Model
{
public 钨条出入库表Model() { }
public string 存货编码 { get; set; }
public decimal 数量 { get; set; }
public string 钨条编号 { get; set; }
}
}
3.2 测试方法
using MES_Client;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApp3
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
List<钨条出入库表Model> listlWT = new List<钨条出入库表Model>();
钨条出入库表Model modelWT = new 钨条出入库表Model();
modelWT.存货编码 = "0001";
modelWT.数量 = 1;
modelWT.钨条编号 = "3A0N000001";
listlWT.Add(modelWT);
modelWT = new 钨条出入库表Model();
modelWT.存货编码 = "0001";
modelWT.数量 = 1;
modelWT.钨条编号 = "3A0N000002";
listlWT.Add(modelWT);
modelWT = new 钨条出入库表Model();
modelWT.存货编码 = "0001";
modelWT.数量 = 2;
modelWT.钨条编号 = "3A0N000003";
listlWT.Add(modelWT);
modelWT = new 钨条出入库表Model();
modelWT.存货编码 = "0003";
modelWT.数量 = 1;
modelWT.钨条编号 = "3A0N000005";
listlWT.Add(modelWT);
modelWT = new 钨条出入库表Model();
modelWT.存货编码 = "0002";
modelWT.数量 = 1;
modelWT.钨条编号 = "3A0N000004";
listlWT.Add(modelWT);
modelWT = new 钨条出入库表Model();
modelWT.存货编码 = "0002";
modelWT.数量 = 1;
modelWT.钨条编号 = "3A0N000006";
listlWT.Add(modelWT);
//Lambda表达式去重
List<钨条出入库表Model> listlWTDistinct = listlWT.Where((x, i) => listlWT.FindIndex(z => z.存货编码 == x.存货编码) == i).ToList();
//通过循环方式去重
List<物料出入库表Model> listlWL = new List<物料出入库表Model>();
decimal l_intNumTotal = 0;
//正确结果为:
//物料出入库表
//存货编码 数量
// 0001 4
// 0002 2
// 0003 1
foreach (var item in listlWTDistinct)
{
l_intNumTotal = 0;
List<钨条出入库表Model> listTemp = listlWT.FindAll(c => c.存货编码 == item.存货编码);
foreach (var temp in listTemp)
{
l_intNumTotal += temp.数量;
}
物料出入库表Model modelWL = new 物料出入库表Model();
modelWL.存货编码 = item.存货编码;
modelWL.数量 = l_intNumTotal;
listlWL.Add(modelWL);
}
Console.WriteLine(JsonConvert.SerializeObject(listlWL) );
}
}
}
四、项目展示