天天看點

c# Linq GroupBy資料分組,實作分組查詢,帶案例

 模型代碼

public class UserInfo
    {
        public int id { set; get; }
        public string name { set; get; }
        public int typeid { set; get; }
    }      

業務代碼

public static void Run()
        {
            #region 準備資料
            List<UserInfo> intlist1 = new List<UserInfo>();

            intlist1.Add(new UserInfo()
            {
                id = 1,
                name = "name1",
                typeid = 1
            });

            intlist1.Add(new UserInfo()
            {
                id = 2,
                name = "name2",
                typeid = 1
            });

            intlist1.Add(new UserInfo()
            {
                id = 3,
                name = "name3",
                typeid = 1
            });
            List<UserInfo> intlist2 = new List<UserInfo>();

            intlist1.Add(new UserInfo()
            {
                id = 3,
                name = "name3",
                typeid = 1
            });
            intlist1.Add(new UserInfo()
            {
                id = 4,
                name = "name4",
                typeid = 4
            });
            intlist1.Add(new UserInfo()
            {
                id = 5,
                name = "name5",
                typeid = 5
            });

            intlist1.AddRange(intlist2);
            #endregion

            Console.WriteLine("【原始資料】");
            foreach (var item in intlist1)
            {
                Console.WriteLine($"intlist1--id{item.id}|name:{item.name}|type:{item.typeid}");
            }

            #region 資料分組1
            Console.WriteLine("、、、、、、、、、【資料分組1】、、、、、、、、、");
            var _uGroupByList = intlist1.AsQueryable().GroupBy(
               userinfo => userinfo.typeid,
               (userinfo) => new UserInfo
               {
                   id = userinfo.id,
                   name = userinfo.name,
                   typeid = userinfo.typeid
               } //通過函數對每個組的元素進行投影。
               );
            Console.WriteLine($"第一個分類ID:{_uGroupByList.ToList()[0].Key}");
            //第一個分類ID下的第一條資料
           UserInfo oneUserInfoData = _uGroupByList.ToList()[0].ToList()[0];
            Console.WriteLine($"第一個分類ID下的第一條資料:{oneUserInfoData.id}--{oneUserInfoData.name}");
            foreach (var items in _uGroupByList)
            {
                Console.WriteLine($"分類ID:{items.Key}");
                foreach (var item in items)
                {
                    Console.WriteLine($"_uList(GroupBy)--id:{item.id}--name{item.name}");
                }

            }
 #endregion
 }      

結果