c# FindAll方法:我正在与语法作斗争
本文关键字:语法 斗争 FindAll 方法 | 更新日期: 2023-09-27 18:15:59
首先,非常感谢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));
Name
从何而来?你是认真的吗?
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<City>
,然后需要在查询结果上调用ToList()
。还有一些其他的错误。
老实说,你应该返回一个IEnumurable<City>
,因为调用者可能不需要修改返回值,只需要枚举它。
还有一个问题;方法参数按照约定使用camelCase
,而不像局部变量那样使用PascalCase
。
Name
应该是s.Name
。(return
后面没有分号,FindAll
的大小写也不正确。)你也可以把它变成一行。像这样:
public static List<City> ReturnCityList(string CityName) {
return GetCities.FindAll(s => s.Name == CityName).ToList();
}