using System;
using System.Collections.Generic;
using System.Linq;
public class Province
{
public string province { set; get; }
public Nullable<int> provinceCode { set; get; }
}
public class Zone
{
public string CityCode { get; set; }
public string City { get; set; }
public string Province { get; set; }
public Nullable<int> ProvinceCode { get; set; }
}
public class ZoneTest
{
public static void Main()
{
List<Zone> ZoneList = new List<Zone>();
Zone newZone = new Zone()
{
CityCode = "citycode1",
City = "city1",
Province = "province1",
ProvinceCode = 1
};
ZoneList.Add(newZone);
newZone = new Zone()
{
CityCode = "citycode2",
City = "city2",
Province = "province2",
ProvinceCode = 2
};
ZoneList.Add(newZone);
newZone = new Zone()
{
CityCode = "citycode2",
City = "city2",
Province = "province2",
ProvinceCode = 2
};
ZoneList.Add(newZone);
Console.WriteLine(ZoneList[0].ProvinceCode);
Console.WriteLine(ZoneList[1].ProvinceCode);
Console.WriteLine(ZoneList[2].ProvinceCode);
List<Province> ListZoneWithDistinct = ZoneList.GroupBy(x => new {x.Province, x.ProvinceCode}).Select(grp => new Province() {province = grp.First().Province, provinceCode = grp.First().ProvinceCode}).ToList();
Console.WriteLine("Count after Distinct: " + ListZoneWithDistinct.Count);
Console.WriteLine(ListZoneWithDistinct[0].provinceCode);
Console.WriteLine(ListZoneWithDistinct[1].provinceCode);
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CiAgICAKcHVibGljIGNsYXNzIFByb3ZpbmNlCnsKICAgIHB1YmxpYyBzdHJpbmcgcHJvdmluY2UgeyBzZXQ7IGdldDsgfQogICAgcHVibGljIE51bGxhYmxlPGludD4gcHJvdmluY2VDb2RlIHsgc2V0OyBnZXQ7IH0KfQogICAgCnB1YmxpYyBjbGFzcyBab25lCnsKICAgIHB1YmxpYyBzdHJpbmcgQ2l0eUNvZGUgeyBnZXQ7IHNldDsgfQogICAgcHVibGljIHN0cmluZyBDaXR5IHsgZ2V0OyBzZXQ7IH0KICAgIHB1YmxpYyBzdHJpbmcgUHJvdmluY2UgeyBnZXQ7IHNldDsgfQogICAgcHVibGljIE51bGxhYmxlPGludD4gUHJvdmluY2VDb2RlIHsgZ2V0OyBzZXQ7IH0KfQoKcHVibGljIGNsYXNzIFpvbmVUZXN0CnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKCXsKCSAgICBMaXN0PFpvbmU+IFpvbmVMaXN0ID0gbmV3IExpc3Q8Wm9uZT4oKTsKCQoJICAgIFpvbmUgbmV3Wm9uZSA9IG5ldyBab25lKCkKCSAgICAgICAgICAgICAgICAgICB7CgkgICAgICAgICAgICAgICAJICAgICAgICBDaXR5Q29kZSA9ICJjaXR5Y29kZTEiLAoJICAgICAgICAgICAgICAgCSAgICAgICAgQ2l0eSA9ICJjaXR5MSIsCgkgICAgICAgICAgICAgICAJICAgICAgICBQcm92aW5jZSA9ICJwcm92aW5jZTEiLAoJICAgICAgICAgICAgICAgCSAgICAgICAgUHJvdmluY2VDb2RlID0gMQoJICAgICAgICAgICAgICAgICAgIH07CgkgICAgICAgICAgICAgICAgCgkgICAgWm9uZUxpc3QuQWRkKG5ld1pvbmUpOwoJICAgIAoJICAgIG5ld1pvbmUgPSBuZXcgWm9uZSgpCgkgICAgICAgICAgICAgICAgICAgewoJICAgICAgICAgICAgICAgCSAgICAgICAgQ2l0eUNvZGUgPSAiY2l0eWNvZGUyIiwKCSAgICAgICAgICAgICAgIAkgICAgICAgIENpdHkgPSAiY2l0eTIiLAoJICAgICAgICAgICAgICAgCSAgICAgICAgUHJvdmluY2UgPSAicHJvdmluY2UyIiwKCSAgICAgICAgICAgICAgIAkgICAgICAgIFByb3ZpbmNlQ29kZSA9IDIKCSAgICAgICAgICAgICAgICAgICB9OwoJICAgICAgICAgICAgICAgIAoJICAgIFpvbmVMaXN0LkFkZChuZXdab25lKTsKCSAgICAKCSAgICBuZXdab25lID0gbmV3IFpvbmUoKQoJICAgICAgICAgICAgICAgICAgIHsKCSAgICAgICAgICAgICAgIAkgICAgICAgIENpdHlDb2RlID0gImNpdHljb2RlMiIsCgkgICAgICAgICAgICAgICAJICAgICAgICBDaXR5ID0gImNpdHkyIiwKCSAgICAgICAgICAgICAgIAkgICAgICAgIFByb3ZpbmNlID0gInByb3ZpbmNlMiIsCgkgICAgICAgICAgICAgICAJICAgICAgICBQcm92aW5jZUNvZGUgPSAyCgkgICAgICAgICAgICAgICAgICAgfTsKCSAgICAgICAgICAgICAgICAKCSAgICBab25lTGlzdC5BZGQobmV3Wm9uZSk7CgkKCSAgICBDb25zb2xlLldyaXRlTGluZShab25lTGlzdFswXS5Qcm92aW5jZUNvZGUpOwoJICAgIENvbnNvbGUuV3JpdGVMaW5lKFpvbmVMaXN0WzFdLlByb3ZpbmNlQ29kZSk7CgkgICAgQ29uc29sZS5Xcml0ZUxpbmUoWm9uZUxpc3RbMl0uUHJvdmluY2VDb2RlKTsKCSAgIAoJICAgCUxpc3Q8UHJvdmluY2U+IExpc3Rab25lV2l0aERpc3RpbmN0ID0gWm9uZUxpc3QuR3JvdXBCeSh4ID0+IG5ldyB7eC5Qcm92aW5jZSwgeC5Qcm92aW5jZUNvZGV9KS5TZWxlY3QoZ3JwID0+IG5ldyBQcm92aW5jZSgpIHtwcm92aW5jZSA9IGdycC5GaXJzdCgpLlByb3ZpbmNlLCBwcm92aW5jZUNvZGUgPSBncnAuRmlyc3QoKS5Qcm92aW5jZUNvZGV9KS5Ub0xpc3QoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKCSAgICBDb25zb2xlLldyaXRlTGluZSgiQ291bnQgYWZ0ZXIgRGlzdGluY3Q6ICIgKyBMaXN0Wm9uZVdpdGhEaXN0aW5jdC5Db3VudCk7CgkgICAgQ29uc29sZS5Xcml0ZUxpbmUoTGlzdFpvbmVXaXRoRGlzdGluY3RbMF0ucHJvdmluY2VDb2RlKTsKCSAgICBDb25zb2xlLldyaXRlTGluZShMaXN0Wm9uZVdpdGhEaXN0aW5jdFsxXS5wcm92aW5jZUNvZGUpOwoJfQp9