C# 如何查询T组的列表
我有以下课程C# 如何查询T组的列表,c#,C#,我有以下课程 public class City { public string Name { get; set; } public string Country { get; set; } public string Language { get; set; } } 现在,我公开了一个名为DataList的属性,如下所示,它创建了一组按国家/地区划分的列表。因此,DataList.Count=2 public List<
public class City
{
public string Name { get; set; }
public string Country { get; set; }
public string Language { get; set; }
}
现在,我公开了一个名为DataList
的属性,如下所示,它创建了一组按国家/地区划分的列表。因此,DataList.Count=2
public List<Group<City>> DataList
{
get
{
_datalist = GetCityGroups();
return _datalist;
}
}
public static List<Group<City>> GetCityGroups()
{
IEnumerable<City> cityList = GetCityList();
return GetItemGroups(cityList, c => c.Country);
}
private static List<Group<T>> GetItemGroups<T>(IEnumerable<T> itemList, Func<T, string> getKeyFunc)
{
IEnumerable<Group<T>> groupList = from item in itemList
group item by getKeyFunc(item) into g
orderby g.Key
select new Group<T>(g.Key, g);
return groupList.ToList();
}
公共列表数据列表
{
得到
{
_datalist=GetCityGroups();
返回数据列表;
}
}
公共静态列表GetCityGroups()
{
IEnumerable cityList=GetCityList();
返回GetItemGroups(cityList,c=>c.Country);
}
私有静态列表GetItemGroups(IEnumerable itemList,Func getKeyFunc)
{
IEnumerable groupList=来自itemList中的项
按getKeyFunc(项)将项分组为g
orderby g.Key
选择新组(g键,g);
返回groupList.ToList();
}
现在,对于一个给定的名字(比如米兰),我需要找到它属于哪个组(DataList[0]或DataList[1])。我该怎么做
我希望避免如下所示的硬编码
Group<City> g = vm.DataList[0]; // remove this hardcoded 0 here...
City c = g.FindLast(x => x.Name == "Milan");
Group g=vm.DataList[0];//在此处删除此硬编码的0。。。
城市c=g.FindLast(x=>x.Name==“米兰”);
public List<Group<City>> DataList
{
get
{
_datalist = GetCityGroups();
return _datalist;
}
}
public static List<Group<City>> GetCityGroups()
{
IEnumerable<City> cityList = GetCityList();
return GetItemGroups(cityList, c => c.Country);
}
private static List<Group<T>> GetItemGroups<T>(IEnumerable<T> itemList, Func<T, string> getKeyFunc)
{
IEnumerable<Group<T>> groupList = from item in itemList
group item by getKeyFunc(item) into g
orderby g.Key
select new Group<T>(g.Key, g);
return groupList.ToList();
}
Group<City> g = vm.DataList[0]; // remove this hardcoded 0 here...
City c = g.FindLast(x => x.Name == "Milan");
vm.DataList.SingleOrDefault(g => g.Any(x => x.Name == "Milan"))