日期:2014-05-20 浏览次数:20978 次
  
  public class Student
    {
        public string 班级 { get; set; }
        public string 姓名 { get; set; }
        public string 课程 { get; set; }
        public int 分数 { get; set; }
    }
        private void button1_Click(object sender, EventArgs e)
        {
            List<Student> mulit = new List<Student> {
                new Student{ 班级="一班", 姓名="张雷鸣", 课程="语文", 分数 =110},
                new Student{ 班级="一班", 姓名="张雷鸣", 课程="数学", 分数=220}
            };
            var tempSet = mulit.GroupBy(s => new { s.班级, s.姓名 }).Select(c => new
            {
                班级 = c.Key.班级,
                姓名 = c.Key.姓名,
                语文 = c.Where(s => s.课程.Equals("语文")).Select(s => s.分数).Single(),
                数学 = c.Where(s => s.课程.Equals("数学")).Select(s => s.分数).Single()
            
            }).ToList();
        }
------解决方案--------------------
up
------解决方案--------------------
单纯的通过一个查询估计实现不了你说的那个结果。
如果课程的科目去确定,感觉直接通过循环来获取结果也许来的更加直接和明了
  public class Student
    {
        public string 班级 { get; set; }
        public string 姓名 { get; set; }
        public string 课程 { get; set; }
        public int 分数 { get; set; }
    }
        public void Test()
        {
            List<Student> mulit = new List<Student> {
                new Student{ 班级="一班", 姓名="张三", 课程="语文", 分数 =110},
                new Student{ 班级="一班", 姓名="张三", 课程="数学", 分数=220}
            };
            var tempSet = mulit.GroupBy(s => new { s.班级, s.姓名 }).Select(c => new
            {
                班级= c.Key.班级,
                姓名 = c.Key.姓名,
                科目集合 = c.ToList()
            }).ToList();
            foreach (var t in tempSet)
            {
                //根据需要将解析的内容存放到相应的变量中
                string info = "班级:"+t.班级;
                foreach (var s in t.科目集合)
                {
                    info = s.课程 + ":" + s.分数.ToString();
                }
            }
        }