zoukankan      html  css  js  c++  java
  • 对集合进行多条件属性分组

    实体类:

    public class Person
        {
            public int ID { get; set; }
            /// <summary>
            /// 姓名
            /// </summary>
            public string Name { get; set; }
            /// <summary>
            /// 住址
            /// </summary>
            public string Addr { get; set; }
            /// <summary>
            /// 国家
            /// </summary>
            public string County { get; set; }
            /// <summary>
            /// 性别 F M
            /// </summary>
            public string  Sex { get; set; }
        }








    实现:
    class Program
        {
            static void Main(string[] args)
            {
                var lst = new List<Person> { 
                 new Person{ ID=1,Name="AA", County="CN", Addr="JD1", Sex="F"},
                 new Person{ ID=2,Name="BB", County="CN", Addr="JD1", Sex="M"},
                 new Person{ ID=3,Name="CC", County="US", Addr="JD2", Sex="F"},
                 new Person{ ID=4,Name="DD", County="US", Addr="JD2", Sex="M"},
                 new Person{ ID=5,Name="EE", County="HK", Addr="JD3", Sex="F"},
                 new Person{ ID=6,Name="FF", County="HK", Addr="JD4", Sex="M"},
                 new Person{ ID=7,Name="GG", County="HK", Addr="JD5", Sex="F"},
                };
     
     
                var gps_1 = lst.GroupBy(x => (GetUnicIdetity(x.County)));//仅仅按照国家分组
                var gps_2 = lst.GroupBy(x => GetUnicIdetity(x.County, x.Sex));//按照国家+性别进行分组
     
                Console.WriteLine("单属性分组:");
                foreach (var g in gps_1)
                {
                    Console.WriteLine(g.Key);
                }
                Console.WriteLine("下面是按照符合组键进行的分组:");
                foreach (var g in gps_2)
                {
                    Console.WriteLine(g.Key);
                }
     
     
                Console.ReadKey();
            }
     
            private static string GetUnicIdetity(params object[] paras)
            {
                StringBuilder sb_result = new StringBuilder("");
                char spliterChar='-';
                if (null!=paras&&paras.Count()>0)
                {
                    foreach (var item in paras)
                    {
                        sb_result.Append(item).Append(spliterChar);
                    }
                    //移除掉最后一个-,也可以不移除
                    if (sb_result.Length>1)
                    {
                        sb_result.Remove(sb_result.Length - 1, 1);
                    }
     
                }
                return sb_result.ToString();
            }
        }






  • 相关阅读:
    【Python】使用hashlib进行MD5和sha1摘要计算
    【Python】torrentParser1.04 增加获得磁力链URI功能
    day30_Hibernate复习_02
    day30_Hibernate学习笔记_02
    day29_Hibernate复习_01
    day29_Hibernate学习笔记_01
    【重要】Spring在web.xml中的配置原理说明
    HTTP常见错误编号
    一级缓存和二级缓存的理解
    电商网站前台与后台系统架构
  • 原文地址:https://www.cnblogs.com/micro-chen/p/4187306.html
Copyright © 2011-2022 走看看