作項目的時候獲取全部城市的時候,發現每次去獲取都花費了不少時間,因此用緩存方法讓效率更高!緩存
這是我作的例子,以下:編碼
public class CacheGetCitycode
{ci
/// <summary>
/// 城市集合
/// </summary>
private static List<MCityInfo> allCityList;string
/// <summary>
/// 最後訪問時間
/// </summary>
private static DateTime lastTime;it
/// <summary>
/// 獲取全量城市對
/// </summary>
/// <returns>城市對</returns>
public static List<MCityInfo> GetInterCityList()
{
if (allCityList == null || allCityList.Count <= 0)
{
allCityList = GetAllCityInfo();
lastTime = DateTime.Now;
}ast
if (lastTime.AddHours(1) < DateTime.Now)////緩存一小時
{
allCityList = GetAllCityInfo();
lastTime = DateTime.Now;
}class
return allCityList;
}效率
/// <summary>
/// 根據Code獲取城市對
/// </summary>
/// <param name="code">城市編碼</param>
/// <returns>城市對</returns>
public static string GetCityNameByCode(string code)
{
string cityName = string.Empty;
GetInterCityList();
List<MCityInfo> list = allCityList.FindAll(arg => arg.AirportCode == code);
foreach (var city in list)
{
cityName += city.CityName + "/";
}foreach
cityName = cityName.TrimEnd('/');
return cityName;
}
/// <summary>
/// 根據城市名稱獲取三字碼
/// </summary>
/// <param name="name">城市名稱</param>
/// <returns>城市三字碼</returns>
public static string GetCityCodeByName(string name)
{
string cityCode = string.Empty;
GetInterCityList();
List<MCityInfo> list = allCityList.FindAll(arg => arg.CityName == name);
foreach (var city in list)
{
cityCode += city.AirportCode + ",";
}
cityCode = cityCode.TrimEnd(',');
return cityCode;
}
/// <summary>
/// 獲取城市信息全量
/// </summary>
/// <returns>城市信息</returns>
private static List<MCityInfo> GetAllCityInfo()
{
string notifyInfo = WcfCallHelper.Instance.Invoke<IFlightChangeDataService, string>("GetCitInfos");
List<MCityInfo> cityList = JsonConvert.DeserializeObject<List<MCityInfo>>(notifyInfo);
return cityList;
}
}