实体类:
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();
}
}