Linq求最大值,最小值,平均值等操作

class Program
{
static void Main(string[] args)
{
List plist = new List() {
new Project(){ ID = 1,PName = “項目1,MID = 1},
new Project(){ ID = 2,PName = “項目2,MID = 2},
new Project(){ ID = 3,PName = “項目3,MID = 3},
new Project(){ ID = 4,PName = “項目4,MID = 1},
new Project(){ ID = 5,PName = “項目5,MID = 2},
new Project(){ ID = 6,PName = “項目6,MID = 3},
};

        List<Users> ulist = new List<Users>() {
            new Users(){ ID = 1,UName = "員工1"},
            new Users(){ ID = 2,UName = "員工2"},
            new Users(){ ID = 3,UName = "員工3"},
            new Users(){ ID = 4,UName = "員工4"},
            new Users(){ ID = 5,UName = "張三"},
            new Users(){ ID = 6,UName = "員工6"},
            new Users(){ ID = 7,UName = "員工7"},
            new Users(){ ID = 8,UName = "員工8"},
        };

        List<Manager> mlist = new List<Manager>() {
            new Manager(){ ID = 1,MName = "經理1"},
            new Manager(){ ID = 2,MName = "經理2"},
            new Manager(){ ID = 3,MName = "經理3"},
        };

        List<Performance> list = new List<Performance>() {
            new Performance(){ PID = 1,UID = 1,Score = 89},
            new Performance(){ PID = 1,UID = 2,Score = 90},
            new Performance(){ PID = 2,UID = 3,Score = 99},
            new Performance(){ PID = 3,UID = 4,Score = 100},
            new Performance(){ PID = 4,UID = 5,Score = 98},
            new Performance(){ PID = 5,UID = 6,Score = 89},
            new Performance(){ PID = 5,UID = 7,Score = 97},
            new Performance(){ PID = 6,UID = 8,Score = 68},
        };

        //求不同成員的績效成績和
        var a = from i in list
                group i by i.PID
                into s
                select new
                {
                    Key = s.Key,
                    Count = s.Sum(p => p.Score)
                };

        Console.WriteLine("========================");
        foreach (var item in a)
        {
            Console.WriteLine(item.Key+","+item.Count);
        }

        Console.WriteLine("========================");


        //求不同成員的績效成績最大值
        var aa = from i in list
                group i by i.PID
                into s
                select new
                {
                    Key = s.Key,
                    Count = s.Max(p => p.Score)
                };

        Console.WriteLine("========================");
        foreach (var item in aa)
        {
            Console.WriteLine(item.Key + "," + item.Count);
        }

        Console.WriteLine("========================");


        //連接查詢
        var xx = from jx in list
                 join emp in plist on jx.PID equals emp.ID
                 join user in ulist on jx.UID equals user.ID
                 join jl in mlist on emp.MID equals jl.ID
                 select new
                 {
                     XiangMu = emp.PName,
                     JinglI = jl.MName,
                     UserName = user.UName,
                     JiXiao = jx.Score
                 };

        //分組
        var groups = from x in xx
                     group x by x.XiangMu;


        //輸出
        foreach (var item in groups)
        {
            Console.WriteLine(item.Key+"=================================");
            foreach (var i in item)
            {
                Console.WriteLine(i.XiangMu + "\t" + i.JinglI + "\t" + i.UserName + "\t" + i.JiXiao);
            }
        }

        //最大值
        var max = xx.Max(p => p.JiXiao);
        //最小值
        var min = xx.Min(p => p.JiXiao);
        //平均值
        var avg = xx.Average(p => p.JiXiao);

        //輸出
        Console.WriteLine(max+","+min+","+avg);


        Console.ReadLine();
    }

    //項目
    class Project
    {
        public int ID { get; set; }
        public string PName { get; set; }
        public int MID { get; set; }

    }

    //員工
    class Users
    {
        public int ID { get; set; }
        public string UName { get; set; }
    }

    //經理
    class Manager
    {
        public int ID { get; set; }
        public string MName { get; set; }
    }

    //績效
    class Performance
    {
        public int UID { get; set; }
        public int PID { get; set; }
        public int Score { get; set; }
    }


}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章