c# 缓存!
做项目的时候获取所有城市的时候,发现每次去获取都花费了很多时间,所以用缓存方法让效率更高!
这是我做的例子,如下:
public class CacheGetCity
{
/// <summary>
/// 城市集合
/// </summary>
private static List<MCityInfo> allCityList;
/// <summary>
/// 最后访问时间
/// </summary>
private static DateTime lastTime;
/// <summary>
/// 获取全量城市对
/// </summary>
/// <returns>城市对</returns>
public static List<MCityInfo> GetInterCityList()
{
if (allCityList == null || allCityList.Count <= 0)
{
allCityList = GetAllCityInfo();
lastTime = DateTime.Now;
}
if (lastTime.AddHours(1) < DateTime.Now)////缓存一小时
{
allCityList = GetAllCityInfo();
lastTime = DateTime.Now;
}
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 + "/";
}
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;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)