{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條評論
主站蜘蛛池模板: 欧美成人免费网在线观看 | 免费一级毛片麻豆精品 | 26uuu另类欧美亚洲日本 | 精品一区二区久久久久久久网站 | 五月天丁香婷婷综合久久 | 国产福利免费看 | 久久影院视频 | 日日摸日日碰夜夜爽久久 | 精品一区二区久久久久久久网站 | 五月一区二区久久综合天堂 | 国产精品手机在线观看 | 国产高清国产专区国产精品 | 插插插色综合 | 又粗又大的机巴好爽视频视频 | 中文字幕高清免费不卡视频 | 99亚洲精品高清一二区 | 国语一级毛片 | 国产精品v一区二区三区 | 欧美成人午夜免费完成 | 热久久最新地址 | 奇米影视4444 | 精品国产呦系列在线看 | 女人牲交视频一级毛片 | 亚洲欧美在线中文字幕不卡 | 99热久久这里只有精品首页 | 久久99久久99精品免观看麻豆 | 女人18级毛片久久 | 国产精品久久九九 | 久久最新免费视频 | 欧美午夜在线视频 | 欧美日韩亚洲精品一区二区 | 久久毛片视频 | 免费99视频有精品视频高清 | 中国国产成人精品久久 | 免费一区二区三区免费视频 | 亚洲国产欧美日韩 | 一区二区免费播放 | 91久久综合九色综合欧美亚洲 | 欧美亚洲另类综合 | 午夜色站 | 欧美日韩无线码在线观看 |