Я работаю над программой, которая (среди прочего) найдет любой город США по почтовому индексу или найдет любой почтовый индекс по городу. У меня есть информация о почтовом индексе и городе, хранящаяся в .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;
Этот метод отлично подходит для возврата города, однако, когда пользователь выполняет поиск по городу, программа должна возвращать МНОЖЕСТВО почтовых индексов. В настоящее время мой код для этого процесса выглядит следующим образом:
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», и не удалось найти метод расширения «ZipCode», принимающий первый аргумент типа «System.Collections.Generic.List» (вам не хватает директивы using или ссылки на сборку?) "
s.Split(',')
три раза, просто сохраните результат в переменной. - person Ben Voigt   schedule 08.11.2013