{newStudentScore{I" />

亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Linq中GroupBy方法的使用總結

系統 1859 0

? Demo模型類:

      
        public
      
      
        class
      
      
         StudentScore

{



    
      
      
        public
      
      
        int
      
       ID { 
      
        set
      
      ; 
      
        get
      
      
        ; }



    
      
      
        public
      
      
        string
      
       Name { 
      
        set
      
      ; 
      
        get
      
      
        ; }



    
      
      
        public
      
      
        string
      
       Course { 
      
        set
      
      ; 
      
        get
      
      
        ; }



    
      
      
        public
      
      
        int
      
       Score { 
      
        set
      
      ; 
      
        get
      
      
        ; }



    
      
      
        public
      
      
        string
      
       Term { 
      
        set
      
      ; 
      
        get
      
      
        ; }



}
      
    

Demo示例代碼:

      
        static
      
      
        void
      
      
         Main()

        {

            
      
      
        var
      
       lst = 
      
        new
      
       List<StudentScore>
      
        

                          {

                              
      
      
        new
      
       StudentScore {ID = 
      
        1
      
      , Name = 
      
        "
      
      
        張三
      
      
        "
      
      , Term = 
      
        "
      
      
        第一學期
      
      
        "
      
      , Course = 
      
        "
      
      
        Math
      
      
        "
      
      , Score = 
      
        80
      
      
        },

                              
      
      
        new
      
       StudentScore {ID = 
      
        1
      
      , Name = 
      
        "
      
      
        張三
      
      
        "
      
      , Term = 
      
        "
      
      
        第一學期
      
      
        "
      
      , Course = 
      
        "
      
      
        Chinese
      
      
        "
      
      , Score = 
      
        90
      
      
        },

                              
      
      
        new
      
       StudentScore {ID = 
      
        1
      
      , Name = 
      
        "
      
      
        張三
      
      
        "
      
      , Term = 
      
        "
      
      
        第一學期
      
      
        "
      
      , Course = 
      
        "
      
      
        English
      
      
        "
      
      , Score = 
      
        70
      
      
        },

                              
      
      
        new
      
       StudentScore {ID = 
      
        2
      
      , Name = 
      
        "
      
      
        李四
      
      
        "
      
      , Term = 
      
        "
      
      
        第一學期
      
      
        "
      
      , Course = 
      
        "
      
      
        Math
      
      
        "
      
      , Score = 
      
        60
      
      
        },

                              
      
      
        new
      
       StudentScore {ID = 
      
        2
      
      , Name = 
      
        "
      
      
        李四
      
      
        "
      
      , Term = 
      
        "
      
      
        第一學期
      
      
        "
      
      , Course = 
      
        "
      
      
        Chinese
      
      
        "
      
      , Score = 
      
        70
      
      
        },

                              
      
      
        new
      
       StudentScore {ID = 
      
        2
      
      , Name = 
      
        "
      
      
        李四
      
      
        "
      
      , Term = 
      
        "
      
      
        第一學期
      
      
        "
      
      , Course = 
      
        "
      
      
        English
      
      
        "
      
      , Score = 
      
        30
      
      
        },

                              
      
      
        new
      
       StudentScore {ID = 
      
        3
      
      , Name = 
      
        "
      
      
        王五
      
      
        "
      
      , Term = 
      
        "
      
      
        第一學期
      
      
        "
      
      , Course = 
      
        "
      
      
        Math
      
      
        "
      
      , Score = 
      
        100
      
      
        },

                              
      
      
        new
      
       StudentScore {ID = 
      
        3
      
      , Name = 
      
        "
      
      
        王五
      
      
        "
      
      , Term = 
      
        "
      
      
        第一學期
      
      
        "
      
      , Course = 
      
        "
      
      
        Chinese
      
      
        "
      
      , Score = 
      
        80
      
      
        },

                              
      
      
        new
      
       StudentScore {ID = 
      
        3
      
      , Name = 
      
        "
      
      
        王五
      
      
        "
      
      , Term = 
      
        "
      
      
        第一學期
      
      
        "
      
      , Course = 
      
        "
      
      
        English
      
      
        "
      
      , Score = 
      
        80
      
      
        },

                              
      
      
        new
      
       StudentScore {ID = 
      
        4
      
      , Name = 
      
        "
      
      
        趙六
      
      
        "
      
      , Term = 
      
        "
      
      
        第一學期
      
      
        "
      
      , Course = 
      
        "
      
      
        Math
      
      
        "
      
      , Score = 
      
        90
      
      
        },

                              
      
      
        new
      
       StudentScore {ID = 
      
        4
      
      , Name = 
      
        "
      
      
        趙六
      
      
        "
      
      , Term = 
      
        "
      
      
        第一學期
      
      
        "
      
      , Course = 
      
        "
      
      
        Chinese
      
      
        "
      
      , Score = 
      
        80
      
      
        },

                              
      
      
        new
      
       StudentScore {ID = 
      
        4
      
      , Name = 
      
        "
      
      
        趙六
      
      
        "
      
      , Term = 
      
        "
      
      
        第一學期
      
      
        "
      
      , Course = 
      
        "
      
      
        English
      
      
        "
      
      , Score = 
      
        70
      
      
        },

                              
      
      
        new
      
       StudentScore {ID = 
      
        1
      
      , Name = 
      
        "
      
      
        張三
      
      
        "
      
      , Term = 
      
        "
      
      
        第二學期
      
      
        "
      
      , Course = 
      
        "
      
      
        Math
      
      
        "
      
      , Score = 
      
        100
      
      
        },

                              
      
      
        new
      
       StudentScore {ID = 
      
        1
      
      , Name = 
      
        "
      
      
        張三
      
      
        "
      
      , Term = 
      
        "
      
      
        第二學期
      
      
        "
      
      , Course = 
      
        "
      
      
        Chinese
      
      
        "
      
      , Score = 
      
        80
      
      
        },

                              
      
      
        new
      
       StudentScore {ID = 
      
        1
      
      , Name = 
      
        "
      
      
        張三
      
      
        "
      
      , Term = 
      
        "
      
      
        第二學期
      
      
        "
      
      , Course = 
      
        "
      
      
        English
      
      
        "
      
      , Score = 
      
        70
      
      
        },

                              
      
      
        new
      
       StudentScore {ID = 
      
        2
      
      , Name = 
      
        "
      
      
        李四
      
      
        "
      
      , Term = 
      
        "
      
      
        第二學期
      
      
        "
      
      , Course = 
      
        "
      
      
        Math
      
      
        "
      
      , Score = 
      
        90
      
      
        },

                              
      
      
        new
      
       StudentScore {ID = 
      
        2
      
      , Name = 
      
        "
      
      
        李四
      
      
        "
      
      , Term = 
      
        "
      
      
        第二學期
      
      
        "
      
      , Course = 
      
        "
      
      
        Chinese
      
      
        "
      
      , Score = 
      
        50
      
      
        },

                              
      
      
        new
      
       StudentScore {ID = 
      
        2
      
      , Name = 
      
        "
      
      
        李四
      
      
        "
      
      , Term = 
      
        "
      
      
        第二學期
      
      
        "
      
      , Course = 
      
        "
      
      
        English
      
      
        "
      
      , Score = 
      
        80
      
      
        },

                              
      
      
        new
      
       StudentScore {ID = 
      
        3
      
      , Name = 
      
        "
      
      
        王五
      
      
        "
      
      , Term = 
      
        "
      
      
        第二學期
      
      
        "
      
      , Course = 
      
        "
      
      
        Math
      
      
        "
      
      , Score = 
      
        90
      
      
        },

                              
      
      
        new
      
       StudentScore {ID = 
      
        3
      
      , Name = 
      
        "
      
      
        王五
      
      
        "
      
      , Term = 
      
        "
      
      
        第二學期
      
      
        "
      
      , Course = 
      
        "
      
      
        Chinese
      
      
        "
      
      , Score = 
      
        70
      
      
        },

                              
      
      
        new
      
       StudentScore {ID = 
      
        3
      
      , Name = 
      
        "
      
      
        王五
      
      
        "
      
      , Term = 
      
        "
      
      
        第二學期
      
      
        "
      
      , Course = 
      
        "
      
      
        English
      
      
        "
      
      , Score = 
      
        80
      
      
        },

                              
      
      
        new
      
       StudentScore {ID = 
      
        4
      
      , Name = 
      
        "
      
      
        趙六
      
      
        "
      
      , Term = 
      
        "
      
      
        第二學期
      
      
        "
      
      , Course = 
      
        "
      
      
        Math
      
      
        "
      
      , Score = 
      
        70
      
      
        },

                              
      
      
        new
      
       StudentScore {ID = 
      
        4
      
      , Name = 
      
        "
      
      
        趙六
      
      
        "
      
      , Term = 
      
        "
      
      
        第二學期
      
      
        "
      
      , Course = 
      
        "
      
      
        Chinese
      
      
        "
      
      , Score = 
      
        60
      
      
        },

                              
      
      
        new
      
       StudentScore {ID = 
      
        4
      
      , Name = 
      
        "
      
      
        趙六
      
      
        "
      
      , Term = 
      
        "
      
      
        第二學期
      
      
        "
      
      , Course = 
      
        "
      
      
        English
      
      
        "
      
      , Score = 
      
        70
      
      
        },

                          };
      
    

?

      
        //
      
      
        分組,根據姓名,統計Sum的分數,統計結果放在匿名對象中。兩種寫法。 

            
      
      
        //
      
      
        第一種寫法 
      
      

            Console.WriteLine(
      
        "
      
      
        ---------第一種寫法
      
      
        "
      
      
        );

            
      
      
        var
      
       studentSumScore_1 = (
      
        from
      
       l 
      
        in
      
      
         lst

                                     group l by l.Name

                                     into grouped

                                     
      
      
        orderby
      
       grouped.Sum(m =>
      
         m.Score)

                                     
      
      
        select
      
      
        new
      
       {Name = grouped.Key, Scores = grouped.Sum(m =>
      
         m.Score)}).ToList();

            
      
      
        foreach
      
       (
      
        var
      
       l 
      
        in
      
      
         studentSumScore_1)

            {

                Console.WriteLine(
      
      
        "
      
      
        {0}:總分{1}
      
      
        "
      
      
        , l.Name, l.Scores);

            }

  

            
      
      
        //
      
      
        第二種寫法 
      
      

            Console.WriteLine(
      
        "
      
      
        ---------第二種寫法
      
      
        "
      
      
        );

            
      
      
        var
      
       studentSumScore_2 = lst.GroupBy(m =>
      
         m.Name)

                .Select(k 
      
      => 
      
        new
      
       {Name = k.Key, Scores = k.Sum(l =>
      
         l.Score)})

                .OrderBy(m 
      
      =>
      
         m.Scores).ToList();

            
      
      
        foreach
      
       (
      
        var
      
       l 
      
        in
      
      
         studentSumScore_2)

            {

                Console.WriteLine(
      
      
        "
      
      
        {0}:總分{1}
      
      
        "
      
      
        , l.Name, l.Scores);

            }

  

            
      
      
        //
      
      
        分組,根據2個條件學期和課程,統計各科均分,統計結果放在匿名對象中。兩種寫法。 
      
      

            Console.WriteLine(
      
        "
      
      
        ---------第一種寫法
      
      
        "
      
      
        );

            
      
      
        var
      
       TermAvgScore_1 = (
      
        from
      
       l 
      
        in
      
      
         lst

                                  group l by 
      
      
        new
      
      
         {l.Term, l.Course}

                                  into grouped

                                  
      
      
        orderby
      
       grouped.Average(m =>
      
         m.Score) ascending

                                  
      
      
        orderby
      
      
         grouped.Key.Term descending

                                  
      
      
        select
      
      
        new
      
       {grouped.Key.Term, grouped.Key.Course, Scores = grouped.Average(m =>
      
         m.Score)})

                .ToList();

            
      
      
        foreach
      
       (
      
        var
      
       l 
      
        in
      
      
         TermAvgScore_1)

            {

                Console.WriteLine(
      
      
        "
      
      
        學期:{0},課程:{1},均分:{2}
      
      
        "
      
      
        , l.Term, l.Course, l.Scores);

            }

            Console.WriteLine(
      
      
        "
      
      
        ---------第二種寫法
      
      
        "
      
      
        );

            
      
      
        var
      
       TermAvgScore_2 = lst.GroupBy(m => 
      
        new
      
      
         {m.Term, m.Course})

                .Select(k 
      
      => 
      
        new
      
       {k.Key.Term, k.Key.Course, Scores = k.Average(m =>
      
         m.Score)})

                .OrderBy(l 
      
      => l.Scores).ThenByDescending(l =>
      
         l.Term);

            
      
      
        foreach
      
       (
      
        var
      
       l 
      
        in
      
      
         TermAvgScore_2)

            {

                Console.WriteLine(
      
      
        "
      
      
        學期:{0},課程:{1},均分:{2}
      
      
        "
      
      
        , l.Term, l.Course, l.Scores);

            }

  

            
      
      
        //
      
      
        分組,帶有Having的查詢,查詢均分>80的學生 
      
      

            Console.WriteLine(
      
        "
      
      
        ---------第一種寫法
      
      
        "
      
      
        );

            
      
      
        var
      
       AvgScoreGreater80_1 = (
      
        from
      
       l 
      
        in
      
      
         lst

                                       group l by 
      
      
        new
      
      
         {l.Name, l.Term}

                                       into grouped

                                       
      
      
        where
      
       grouped.Average(m => m.Score) >= 
      
        80
      
      
        orderby
      
       grouped.Average(m =>
      
         m.Score) descending

                                       
      
      
        select
      
      
        new
      
      
        

                                               {

                                                   grouped.Key.Name,

                                                   grouped.Key.Term,

                                                   Scores 
      
      = grouped.Average(m =>
      
         m.Score)

                                               }).ToList();

            
      
      
        foreach
      
       (
      
        var
      
       l 
      
        in
      
      
         AvgScoreGreater80_1)

            {

                Console.WriteLine(
      
      
        "
      
      
        姓名:{0},學期:{1},均分:{2}
      
      
        "
      
      
        , l.Name, l.Term, l.Scores);

            }

            Console.WriteLine(
      
      
        "
      
      
        ---------第二種寫法
      
      
        "
      
      
        );

            
      
      
        /*
      
      
        此寫法看起來較為復雜,第一個Groupby,由于是要對多個字段分組的,因此構建一個匿名對象,

            對這個匿名對象分組,分組得到的其實是一個IEnumberable<IGrouping<匿名類型,StudentScore>>這樣一個類型。

            Where方法接受,和返回的都同樣是IEnumberable<IGrouping<匿名類型,StudentScore>>類型,

            其中Where方法簽名Func委托的類型也就成了Func<IGrouping<匿名類型,StudentScore>,bool>,

            之前說到,IGrouping<out TKey, out TElement>繼承了IEnumerable<TElement>,

            因此這種類型可以有Average,Sum等方法。 
      
      
        */
      
      
        var
      
       AvgScoreGreater80_2 = lst.GroupBy(l => 
      
        new
      
      
         {l.Name, l.Term})

                .Where(m 
      
      => m.Average(x => x.Score) >= 
      
        80
      
      
        )

                .OrderByDescending(l 
      
      => l.Average(x =>
      
         x.Score))

                .Select(l 
      
      => 
      
        new
      
       {l.Key.Name, l.Key.Term, Scores = l.Average(m =>
      
         m.Score)}).ToList();

            
      
      
        foreach
      
       (
      
        var
      
       l 
      
        in
      
      
         AvgScoreGreater80_2)

            {

                Console.WriteLine(
      
      
        "
      
      
        姓名:{0},學期:{1},均分:{2}
      
      
        "
      
      
        , l.Name, l.Term, l.Scores);

            }

  

            Console.ReadKey();

        }
      
    


原文地址: http://hi.baidu.com/tewuapple/item/5e0e5a2862b67a8b9c63d103

?

?

?

?

Linq中GroupBy方法的使用總結


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 成人欧美精品久久久久影院 | 手机在线看福利 | 国产精品免费入口视频 | 国产精品国产精品 | 伊人中文在线 | 国产女主播在线视频 | 日韩精品一区二区三区中文精品 | 久久亚洲国产中v天仙www | 欧美a级成人淫片免费看 | 日韩中文在线观看 | 夜夜操国产 | 狠狠色噜噜狠狠狠狠狠色综合久久 | 国产成综合| 嫩草社区| 亚洲欧美日韩高清一区二区三区 | 日韩视频大全 | 成年女人毛片免费播放视频m | 国产精品福利在线观看免费不卡 | 性做久久久久久久久25的美女 | 天天操操 | 国产在线短视频 | 久久香蕉国产线看观看99 | 成年女人视频播放免费观看 | 亚洲天堂爱爱 | 午夜国产福利在线 | 欧美性xxx免费看片 欧美性白人顶级hd 欧美性插视频 | 欧美网站色| 亚洲一区二区三区成人 | 99久久99热久久精品免 | 日本高清不卡免费 | 伊人久久大香焦 | 91久久精品午夜一区二区 | 国产小视频免费观看 | 日韩欧美视频在线一区二区 | 99热久久精品国产66 | 国产原创中文字幕 | 欧美日韩福利视频一区二区三区 | 欧美成人午夜 | 欧美综合色 | 天天干天天操天天做 | 国产精品青草久久福利不卡 |