C# C FindAll方法:我正在与语法作斗争

C# C FindAll方法:我正在与语法作斗争,c#,C#,首先,感谢StackOverflow社区。我是C的新手,这个团队多次把我从火中拉出来 问题:我在使用C FindAll方法时遇到了一些问题。具体来说,我不能让它工作,我知道这是我 好用的东西: public class City { public string Name {get;set;} public string Country {get;set;} } public List<City> GetCities() { List<City> cit

首先,感谢StackOverflow社区。我是C的新手,这个团队多次把我从火中拉出来

问题:我在使用C FindAll方法时遇到了一些问题。具体来说,我不能让它工作,我知道这是我

好用的东西:

public class City
{
   public string Name {get;set;}
   public string Country {get;set;}
}

public List<City> GetCities()
{
   List<City> cities = new List<City>();
   cities.Add(new City() { Name = "Istanbul", Country = "Turkey" });
   // etc, add a bunch more cities, including multiple entries for 
   // some cities
   return cities;
}
现在什么不起作用了。。。它返回所有城市或无城市,这取决于我如何处理语法

public static List<> ReturnCityList(string CityName)
{
  Cities = GetCities;
  var RequestedCities = Cities.Findall(s => Name.Equals(CityName));
  return RequestedCities
}
我做错了什么

我读了很多例子,但我遗漏了一些东西

谢谢大家!

var RequestedCities = Cities.Findall(s => Name.Equals(CityName));
这个名字来自哪里?你是说这个吗

var RequestedCities = Cities.Findall(s => s.Name.Equals(CityName));
甚至

var RequestedCities = Cities.Findall(s => s.Name == CityName);
它用更简单的语法做同样的事情

您没有使用s变量,即在迭代中保存当前元素的变量。这是您可能需要对照CityName检查的内容。我怀疑你的版本是否正确。还有

public static List<> ReturnCityList(string CityName)
那不会编译。不能使用空的泛型参数,需要将返回值指定为List,然后需要对查询结果调用ToList。还有一些其他的错误

老实说,您可能只需要返回一个IEnumerable,因为调用方可能不需要修改返回值,只需枚举它即可

再挑剔一次;方法参数按约定使用camelCase,而不是PascalCase,局部变量也是如此

这个名字来自哪里?你是说这个吗

var RequestedCities = Cities.Findall(s => s.Name.Equals(CityName));
甚至

var RequestedCities = Cities.Findall(s => s.Name == CityName);
它用更简单的语法做同样的事情

您没有使用s变量,即在迭代中保存当前元素的变量。这是您可能需要对照CityName检查的内容。我怀疑你的版本是否正确。还有

public static List<> ReturnCityList(string CityName)
那不会编译。不能使用空的泛型参数,需要将返回值指定为List,然后需要对查询结果调用ToList。还有一些其他的错误

老实说,您可能只需要返回一个IEnumerable,因为调用方可能不需要修改返回值,只需枚举它即可

再挑剔一次;方法参数按约定使用camelCase,而不是PascalCase,局部变量也是如此。

名称应为s.Name。返回后没有分号,芬德尔的大写不正确。你也可以把它变成一行。所以像这样:

public static List<City> ReturnCityList(string CityName) {
    return GetCities.FindAll(s => s.Name == CityName).ToList();
}
名称应为s.Name。返回后没有分号,芬德尔的大写不正确。你也可以把它变成一行。所以像这样:

public static List<City> ReturnCityList(string CityName) {
    return GetCities.FindAll(s => s.Name == CityName).ToList();
}

仅供参考:字符串不需要等于,==运算符重载。我认为,它应该是s=>s.Name。。。。在这种情况下,GetCities应该是静态的,不是吗?仅供参考:字符串不需要等于,==运算符重载了。我认为,它应该是s=>s.Name。。。。在这种情况下,GetCities应该是静态的,不是吗?谢谢!我使用了var RequestedCities=Cities.Findalls=>s.Name==CityName;那正是那张票。也谢谢你的其他提示!谢谢我使用了var RequestedCities=Cities.Findalls=>s.Name==CityName;那正是那张票。也谢谢你的其他提示!