根据关联标识给数据分组

如果关联标识存在于之前数据的行标识,则为一组。
数据分组后应该为:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ucjj4ftw-1624267932726)(en-resource://database/675:1)]](https://img-blog.csdnimg.cn/20210621173532813.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkyOTgzNg==,size_16,color_FFFFFF,t_70

分组代码

            Dictionary<string, List<string>> dictCutCount = new Dictionary<string, List<string>>();
            //存放行标识以及最后一次的关联标识
            Dictionary<string, string> dictAssign = new Dictionary<string, string>();
            for (int i = 0; i < list.Count; i++)
            {
                string mark = list[i].F_DM_IntMark;
                string connect = list[i].F_DM_IntConnect;
                string cutCount = list[i].F_DM_CutCount;
                if (dictAssign.ContainsValue(connect)) //dictAssign的value存在当前connect,找到对应组并添加数据
                {
                    foreach (string key in dictAssign.Keys)
                    {
                        if (dictAssign[key] == connect)
                        {
                            dictCutCount[key].Add(cutCount);
                            dictAssign[key] = mark;
                            break;
                        }
                    }
                }
                else
                {
                    dictCutCount.Add(mark, new List<string>() { cutCount });
                    dictAssign.Add(mark, mark);
                }
            }

构建测试数据(不重要):

struct Tests

        {

            public string F_DM_IntMark;

            public string F_DM_IntConnect;

            public string F_DM_CutCount;

            public void setValues(string a, string b, string c)

            {

                F_DM_IntMark = a;

                F_DM_IntConnect = b;

                F_DM_CutCount = c;

            }
 
        };
Tests test1 = new Tests();

            Tests test2 = new Tests();

            Tests test3 = new Tests();

            Tests test4 = new Tests();

            Tests test5 = new Tests();

            Tests test6 = new Tests();



            test1.setValues("a", "aabbccdd", "1");

            test2.setValues("aa", "ab", "1");

            test3.setValues("b", "a", "2");

            test4.setValues("c", "b", "3");

            test5.setValues("ab", "aa", "2");

            test6.setValues("d", "c", "4");

            List<Tests> list = new List<Tests>() { test1, test2, test3, test4, test5, 
test6 };
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值