У меня есть список, состоящий из всех почтовых индексов США, каждый из которых состоит из 3 элементов.Таким образом, список составляет ~ 45 000 x 3 строки.Каков наилучший способ загрузить это, по сути, самый эффективный / оптимизированный?Прямо сейчас у меня есть цикл foreach, запускающий его, и каждый раз, когда он достигает точки загрузки, он зависает.Есть ли лучший подход?
Редактировать
Это позволяет пользователю вводить почтовый индекс и отображать город и штат вдва других текстовых поля.Прямо сейчас я настроен на проверку, когда пользователь печатает, после того, как грязный номер введен, он зависает, я думаю, что в кодах ZipCodes = новые ZipCodes ()
Это код, который я сейчас использую,Я оставил одно из zipCode.Add
утверждений, но удалил остальные 44 999.
struct ZipCode
{
private String cvZipCode;
private String cvCity;
private String cvState;
public string ZipCodeID { get { return cvZipCode; } }
public string City { get { return cvCity; } }
public string State { get { return cvState; } }
public ZipCode(string zipCode, string city, string state)
{
cvZipCode = zipCode;
cvCity = city;
cvState = state;
}
public override string ToString()
{
return City.ToString() + ", " + State.ToString();
}
}
class ZipCodes
{
private List<ZipCode> zipCodes = new List<ZipCode>();
public ZipCodes()
{
zipCodes.Add(new ZipCode("97475","SPRINGFIELD","OR"));
}
public IEnumerable<ZipCode> GetLocation()
{
return zipCodes;
}
public IEnumerable<ZipCode> GetLocationZipCode(string zipCode)
{
return zipCodes;
}
public IEnumerable<ZipCode> GetLocationCities(string city)
{
return zipCodes;
}
public IEnumerable<ZipCode> GetLocationStates(string state)
{
return zipCodes;
}
}
private void LocateZipCode(TextBox source, TextBox destination, TextBox destination2 = null)
{
ZipCodes zips = new ZipCodes();
string tempZipCode;
List<ZipCode> zipCodes = new List<ZipCode>();
try
{
if (source.Text.Length == 5)
{
tempZipCode = source.Text.Substring(0, 5);
dataWorker.RunWorkerAsync();
destination.Text = zipCodes.Find(searchZipCode => searchZipCode.ZipCodeID == tempZipCode).City.ToString();
if (destination2.Text != null)
{
destination2.Text = zipCodes.Find(searchZipCode => searchZipCode.ZipCodeID == tempZipCode).State.ToString();
}
}
else destination2.Text = "";
}
catch (NullReferenceException)
{
destination.Text = "Invalid Zip Code";
if (destination2 != null)
{
destination2.Text = "";
}
}
}