Linq多列分组问题-创新互联

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

公司主营业务:网站设计、成都网站设计、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出嘉善免费做网站回馈大家。

  班级         课程   老师
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; }
    }
}

创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。

当前文章:Linq多列分组问题-创新互联
网站网址:https://www.cdcxhl.com/article40/diihho.html

成都网站建设公司_创新互联,为您提供手机网站建设网页设计公司商城网站外贸网站建设用户体验移动网站建设

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都网站建设