LInq中分组的笔记,记录一下。

/*
            DataTable dtProduct = new DataTable();
            dtProduct.Columns.Add("ID");
            dtProduct.Columns.Add("Product");

            DataRow dr1 = dtProduct.NewRow();
            dr1["ID"] = "1";
            dr1["Product"] = "产品1";
            dtProduct.Rows.Add(dr1);

            DataRow dr2 = dtProduct.NewRow();
            dr2["ID"] = "2";
            dr2["Product"] = "产品2";
            dtProduct.Rows.Add(dr2);

            DataTable dtTip = new DataTable();
            dtTip.Columns.Add("ID");
            dtTip.Columns.Add("PID");
            dtTip.Columns.Add("Tip");

            DataRow dr3 = dtTip.NewRow();
            dr3["ID"] = "1";
            dr3["PID"] = "1";
            dr3["Tip"] = "标签1";
            dtTip.Rows.Add(dr3);

            DataRow dr4 = dtTip.NewRow();
            dr4["ID"] = "2";
            dr4["PID"] = "1";
            dr4["Tip"] = "标签2";
            dtTip.Rows.Add(dr4);

            DataRow dr5 = dtTip.NewRow();
            dr5["ID"] = "3";
            dr5["PID"] = "1";
            dr5["Tip"] = "标签3";
            dtTip.Rows.Add(dr5);

            DataRow dr6 = dtTip.NewRow();
            dr6["ID"] = "4";
            dr6["PID"] = "2";
            dr6["Tip"] = "标签1";
            dtTip.Rows.Add(dr6);

            DataRow dr7 = dtTip.NewRow();
            dr7["ID"] = "5";
            dr7["PID"] = "2";
            dr7["Tip"] = "标签3";
            dtTip.Rows.Add(dr7);


            var result = dtProduct.Rows.Cast<DataRow>().Select(R => new
            {
                PID = R["ID"].ToString(),
                Product = R["Product"].ToString(),
                Tips = string.Join(",", 
                            dtTip.Rows
                            .Cast<DataRow>()
                            .Where(
                                C => C["PID"].ToString().Equals(R["ID"].ToString())
                             )
                            .Select(C => C["Tip"].ToString())
                            .ToArray())
            });

            foreach (var r in result) {
                Console.WriteLine(r.Product + " - " + r.Tips);
            }
            */

            List<Tables> list = new List<Tables>();
            
            
            DataTable dtTip = new DataTable();
            dtTip.Columns.Add("ID");
            dtTip.Columns.Add("Product");
            dtTip.Columns.Add("Tip");

            DataRow dr3 = dtTip.NewRow();
            dr3["ID"] = "1";
            dr3["Product"] = "产品1";
            dr3["Tip"] = "标签1";
            dtTip.Rows.Add(dr3);

            DataRow dr4 = dtTip.NewRow();
            dr4["ID"] = "2";
            dr4["Product"] = "产品1";
            dr4["Tip"] = "标签2";
            dtTip.Rows.Add(dr4);

            DataRow dr5 = dtTip.NewRow();
            dr5["ID"] = "3";
            dr5["Product"] = "产品1";
            dr5["Tip"] = "标签3";
            dtTip.Rows.Add(dr5);

            DataRow dr6 = dtTip.NewRow();
            dr6["ID"] = "4";
            dr6["Product"] = "产品2";
            dr6["Tip"] = "标签1";
            dtTip.Rows.Add(dr6);

            DataRow dr7 = dtTip.NewRow();
            dr7["ID"] = "5";
            dr7["Product"] = "产品2";
            dr7["Tip"] = "标签3";
            dtTip.Rows.Add(dr7);

            /*
            var result = from DataRow datarow in dtTip.Rows
                         group datarow by datarow["Product"].ToString() into g
                         select new
                         {
                             Product = g.Key,
                             Tips = string.Join("," , g.Select(R => R["tip"].ToString()).ToArray())
                         };

            */

            var result = dtTip.Rows.Cast<DataRow>().GroupBy(R => R["Product"].ToString()).Select(G => new
            {
                Product = G.Key,
                Tips = string.Join(",", G.Select(R => R["tip"].ToString()).ToArray())
            });

            foreach (var r in result)
            {
                Console.WriteLine(r.Product + " - " + r.Tips.ToString());
            }

            Console.ReadLine();

 

转载于:https://www.cnblogs.com/chenliang-zibo/p/5895268.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值