{newStudentScore{I" />

欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Linq中GroupBy方法的使用總結

系統 1918 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條評論
主站蜘蛛池模板: 国产精品1区2区3区 二区国产 | 无码缴情做A爱片毛片A片 | 日本在线视 | 114美女做爰视频在线 | 中文字幕免费在线观看视频 | 欧美亚洲在线观看 | 欧美黄色免费网站 | 激情黄视频 | 精品一区二区在线观看视频 | 亚洲一区国产 | 欧美精品3atv一区二区三区 | 青青青青久久久久国产的 | 日本吻胸捏胸激烈床戏视频 | 精品视频在线观看 | 国产精品99久久久久久久女警 | 日韩在线高清 | 波多野结衣在线视频观看 | 欧美一区二区三区四区视频 | 日韩在线观看你懂的 | 日韩久久久久久 | 亚洲一区二区三区日本久久九 | 91精品久久久久久久 | 国产成人亚洲毛片 | 欧美18videosex性视频 | 亚洲一区二区福利视频 | 国产999精品久久久影片官网 | 精品欧美一区二区久久久伦 | 亚洲免费视频在线观看 | 五月天电影网 | 男女在线免费视频 | 免费国产va在线观看视频 | 婷婷成人免费视频 | 日本在线播放一区二区 | 免费视频97碰碰碰在线观看 | 91成人在线 | 亚欧精品一区二区三区四区 | 免费午夜不卡毛片 | 国产91在线免费 | 国产精品激情福利视频 | 国产精品久久久久久久久久 | 99精品视频在线 |