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();
相關文章
相關標籤/搜索