首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

LINQ高手帮忙解决思路

2012-01-19 
LINQ高手帮忙班级姓名课程得分一班张三语文78一班张三数学88一班张三英语98一班李四语文60一班李四数学70

LINQ高手帮忙
班级 姓名 课程 得分
一班 张三 语文 78
一班 张三 数学 88
一班 张三 英语 98
一班 李四 语文 60
一班 李四 数学 70
一班 李四 英语 80

我想转换为:

班级 姓名 语文 数学 英语
一班 张三 78 88 98
一班 李四 60 70 80


请问用linq怎么实现?




[解决办法]

C# code
    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
[解决办法]
单纯的通过一个查询估计实现不了你说的那个结果。
如果课程的科目去确定,感觉直接通过循环来获取结果也许来的更加直接和明了
C# code
  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();                }            }        } 

热点排行