C#FindAll方法:我正在努力学习语法

Jon*_*ica 1 c#

首先,感谢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;
}
Run Code Online (Sandbox Code Playgroud)

现在什么行不通...(它返回所有城市或没有(取决于我如何摆弄语法).

public static List<> ReturnCityList(string CityName)
{
  Cities = GetCities;
  var RequestedCities = Cities.Findall(s => Name.Equals(CityName));
  return RequestedCities
}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

我已经阅读了很多例子,但我遗漏了一些东西.

谢谢!

Ed *_* S. 9

var RequestedCities = Cities.Findall(s => Name.Equals(CityName));
Run Code Online (Sandbox Code Playgroud)

Name来自哪里?你的意思是?

var RequestedCities = Cities.Findall(s => s.Name.Equals(CityName));
Run Code Online (Sandbox Code Playgroud)

甚至

var RequestedCities = Cities.Findall(s => s.Name == CityName);
Run Code Online (Sandbox Code Playgroud)

使用更简单的语法可以做同样的事情.

您没有使用s变量,即在迭代中保存当前元素的变量.这就是你可能需要检查的内容CityName.我怀疑你的版本甚至编译.也...

public static List<> ReturnCityList(string CityName)
Run Code Online (Sandbox Code Playgroud)

那不会编译.您不能使用空泛型参数,您需要指定返回值List<City>,然后您需要调用ToList()查询的结果.还有一些其他错误.

老实说你应该只返回一个,IEnumurable<City>因为调用者可能不需要修改返回值,只需枚举它.

还有一个挑剔; 方法参数camelCase按惯例使用,而不是PascalCase局部变量.