Linq多列分组问题

Linq 多列分组问题,是非常常见的需求。下面引用论坛某位坛友提出的问题:

创新互联-专业网站定制、快速模板网站建设、高性价比南江网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式南江网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖南江地区。费用合理售后完善,十年实体公司更值得信赖。

    班级         课程   老师
A  高一班     英语   小王
B  高二班     英语   小王
C  高一班     英语   小张

结果:

    班级         课程   老师
A  高一班     英语   小王
C  高一班     英语   小张

经过分析可以看出,根据课程和老师进行分组,重复的取第一行的数据。传统的方法可能要写很多代码,而用Lambda或者Linq只需要几行代码就能实现。

完整代码如下:

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Data[] data = new Data[] 
            { 
                new Data(){班级="高一班", 课程="英语", 老师="小王"},
                new Data(){班级="高二班", 课程="英语", 老师="小王"},
                new Data(){班级="高一班", 课程="英语", 老师="小张"},
                new Data(){班级="高一班", 课程="英语", 老师="小张"},
            };

            //方式1:Lambda
            var resultLambda = data.GroupBy(x => new { 课程 = x.课程, 老师 = x.老师 }).Select(x => x.FirstOrDefault());
            resultLambda.ToList().ForEach(x => Console.WriteLine(string.Join(",", x.班级, x.课程, x.老师)));

            //方式2:Linq
            var resultLinq = from p in data
                             group p by new { p.课程, p.老师 } into g
                             select new
                             {
                                 班级 = g.FirstOrDefault().班级,
                                 课程 = g.Key.课程,
                                 老师 = g.Key.老师,
                             };
            resultLinq.ToList().ForEach(x => Console.WriteLine(string.Join(",", x.班级, x.课程, x.老师)));
        }
    }

    public class Data
    {
        public string 班级 { get; set; }
        public string 课程 { get; set; }
        public string 老师 { get; set; }
    }
}

网页名称:Linq多列分组问题
文章源于:http://bzwzjz.com/article/gpgcgj.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 企业网站设计 专业网站设计 营销型网站建设 专业网站设计 网站建设 成都模版网站建设 品牌网站建设 网站设计 成都网站建设公司 成都网站设计制作公司 成都网站建设 重庆网站设计 重庆电商网站建设 企业网站建设 成都网站建设 成都商城网站制作 成都网站建设 成都网站建设公司 成都网站设计 营销网站建设 成都网站制作 app网站建设