Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何查询T组的列表_C# - Fatal编程技术网

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"))