我正在开发一个程序,该程序(除其他外)将按邮政编码查找任何美国城市,或按城市查找任何邮政编码。我将邮政编码和城市信息存储在 .csv 中,并且我成功地将这些数据拉入并存储。
正如您从下面的代码中看到的那样,现在我正在找到与City
特定邮政编码相关的第一个(最后一行代码):
class City
{
public string Name { get; set; }
public int ZipCode { get; set; }
public string State { get; set; }
}
private void btnConvert2City_Click(object sender, EventArgs e)
{
try
{
Boolean firstLoop = true;
string dir = System.IO.Path.GetDirectoryName(
System.Reflection.Assembly.GetExecutingAssembly().Location);
string path = dir + @"\zip_code_database_edited.csv";
var open = new StreamReader(File.OpenRead(path));
List<City> cities = new List<City>();
foreach (String s in File.ReadAllLines(path))
{
if (firstLoop)
{
firstLoop = false;
continue;
}
City temp = new City();
temp.ZipCode = int.Parse(s.Split(',')[0]);
temp.Name = s.Split(',')[1];
temp.State = s.Split(',')[2];
cities.Add(temp);
}
txtCity.Text = cities
.Find(s => s.ZipCode == Int32.Parse(txtZipcode.Text))
.Name;
此方法非常适合返回城市,但是当用户按城市搜索时,程序必须返回 MANY 邮政编码。目前我的这个过程的代码如下:
txtZipcode.Text = cities
.Find(s => (s.Name == txtCity.Text.Split(',')[0]))
.ZipCode
.ToString();
作为 C# 新手,我想我可以更改cities.Find
为cities.FindAll
. 但是,当我这样做时,它不允许我包含.ZipCode
,并且.ZipCode
删除后,程序会在文本框中返回System.Collections.Generic.List
1[MyConvert.formLookup+City]`。
有没有更好的方法可以返回与特定城市相关的所有邮政编码?
如果它有帮助,如果我尝试包含,我得到的确切错误.ZipCode
是:
错误 1
'System.Collections.Generic.List<MyConvert.formLookup.City>'
不包含“ZipCode”的定义,并且找不到接受“System.Collections.Generic.List”类型的第一个参数的扩展方法“ZipCode”(您是否缺少 using 指令或程序集引用?)”