比如说
姓名 年龄 课程
张三 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/>"); } }