首页 > 代码库 > 对集合进行多条件属性分组
对集合进行多条件属性分组
实体类:
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&¶s.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(); } }
对集合进行多条件属性分组
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。