【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 创建数据模型

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) );
        }

 
    }
}

四、项目展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、资源链接

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花北城

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值