日期:2014-05-20 浏览次数:20820 次
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(); } } }