日期:2014-05-17  浏览次数:20421 次

repeater两列合并成一列
比如说


姓名 年龄 课程
张三 12 物理
张三 12 英语
里斯 13 化学
小明 14 英语


这是我从数据库中直接绑定的数据


我希望的效果是
姓名 年龄 课程
张三 12 物理、英语
里斯 13 化学
小明 14 英语



但是我现在课程能合并 但是出现了两条重复的记录  
请指教! 谢谢!

------解决方案--------------------
可以考虑下嵌套就可以实现
------解决方案--------------------
SQL写个函数,传进去姓名跟年龄返回课程
------解决方案--------------------
C# code

    protected void Page_Load(object sender, EventArgs e)
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("姓名", typeof(string));
        dt.Columns.Add("年龄", typeof(string));
        dt.Columns.Add("课程", typeof(string));

        dt.Rows.Add("张三", "12", "物理");
        dt.Rows.Add("张三", "12", "英语");
        dt.Rows.Add("李四", "13", "化学");
        dt.Rows.Add("王五", "14", "物理");

        var results = dt.AsEnumerable().GroupBy(o => o.Field<string>("姓名"))
            .Select(o => new
            {
                姓名 = o.Key,
                年龄 = o.Max(n => n.Field<string>("年龄")),
                课程 = string.Join(",", dt.AsEnumerable().Where(p => p.Field<string>("姓名") == o.Key)
                .Select(s => s.Field<string>("课程")).ToArray())
            }).ToList();

        foreach (var r in results)
        {
            Response.Write(r.姓名);
            Response.Write("    ");
            Response.Write(r.年龄);
            Response.Write("    ");
            Response.Write(r.课程);
            Response.Write("<br/>");
        }
    }