C# List 儲存每小時的統計數值,如果該小時沒有資料,則需新增資料

weixin_44220506 2021-03-24 05:10:52
大家好,

我有一個Alist,用來存放Info Class。


public class Info
{
public int data {get;set;}
public DateTime startTime{get;set;} //例如: 2021-03-24 10:00:00
public DateTime endTime{get;set;} //例如: 2021-03-24 11:00:00
}


假設AList需要存放2日(不一定是剛好凌晨12點開始)每小時的數據,共計48個元素,就算數值是0也需要記錄。
現在已有一個BList存有這2日內中約4筆的數據,這4筆數據是有效的(非0數據),
希望將BList的數據存放至AList內。

目前想到的做法是…

			

//1.先建立出AList的所有數據,數據皆為0
DateTime startTime = DateTime.Parse("2020/07/07 00:00:01");//开始时间
DateTime endTime = DateTime.Parse("2020/07/09 00:00:00");//结束时间
List<Info> AList = new List<Info>();//存储所有时间段内的整点时间
double hours = int.Parse(Math.Floor((endTime - startTime).TotalHours).ToString());//计算时间段内的小时
int hourBegin = startTime.Hour;//开始时间的小时
string daybegin = startTime.Date.ToString();//开始时间日期
DateTime hourTimeBegin = DateTime.Parse(daybegin + ' ' + hourBegin + ':' + "00" + ':' +"00");//转换成开始时间所在的小时
if (hours > 1)//判断时间段内是否小时数大于1
{
for (int i = 1; i <= hours; i++)
{
Info info = new Info();
info.data = 0;
info.startTime = hourTimeBegin.AddHours(i);

AList.Add(info);
}

//2.再一一比對BList

for (int i = 0; i < AList.Count; i++)
{
for ( int j = 0; j < BList.Count; j++)
{
if(DateTime.Compare(AList[i].startTime, BList[j].startTime)
{
AList[i].data = BList[j].data;
}
}
}
}



覺得雙迴圈時間複雜度太高了…
不曉得是否還有更快的作法呢?
懇請板上先進指導,謝謝^^


...全文
138 2 打赏 收藏 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_44220506 2021-03-24
  • 打赏
  • 举报
回复
引用 1 楼 wanghui0380 的回复:
假设你的软件从来就不重启
你可以自行百度“C# 缓存依赖”设置绝对过期时间为48小时,过期后他自己逐出

如果你的软件需要重启,请自己百度“redis’等专用缓存件


wanghui0380您好,其實BList的數據是從數據庫取出的,所以沒有要用到redis那些,只是要單純的演算法處理數據。
wanghui0380 2021-03-24
  • 打赏
  • 举报
回复
假设你的软件从来就不重启 你可以自行百度“C# 缓存依赖”设置绝对过期时间为48小时,过期后他自己逐出 如果你的软件需要重启,请自己百度“redis’等专用缓存件
下载代码方式:https://pan.quark.cn/s/a4b39357ea24 【创新7.1声卡KX驱动+连线图】是一款专门为创新公司所制造的7.1音频声卡量身定制的驱动方案,其核心宗旨在于为用户带来超越官方原生驱动程序的卓越音质感受。KX驱动属于一种由爱好者群体自主开发的非官方驱动软件,该驱动在Creative公司原版驱动程序的基础上进行了深度改良与功能扩充,旨在提供更为多样化的声音调节参数以及更为出色的运行表现。 我们现在来详细认识一下7.1声道系统。7.1声道代表的是一种沉浸式音频技术规范,该规范包含七个全频域音箱单元(具体包括前置左声道、前置右声道、中央声道、环绕左声道、环绕右声道、后置左声道以及后置右声道)搭配一个低频震动单元,其设计目的是为用户构建更加立体且逼真的听觉场景,尤其适合应用于电子游戏、电影观影以及音乐欣赏等场景。 KX驱动的独到之处在于其赋予了用户更为广阔的个性化定制权限,使用者能够依据自身的听音偏好对音频参数进行细致调节,例如均衡器参数、混响效果、压缩比设定、噪声抑制门限等,从而使得最终的音效呈现出更为精致且个性化的特质。不仅如此,KX驱动还兼容VST插件机制,该机制是虚拟乐器与音频效果处理软件的通用标准,用户通过安装各式各样的VST插件,能够进一步增强声卡的实用功能,例如模拟多种乐器音色或达成复杂的声音效果制作。 在获取并部署KX驱动程序之后,对"连线图"的正确导入工作具有决定性意义。连线图又被称为音频路由配置图或信号流向示意图,它是一份用于指导用户如何正确配置并连接各个音频输出通道的视觉化手册。对于非专业背景的使用者而言,准确设定这些音频通道可能会面临一定程度的困难,因此连线图的提供极大地简化了这一过程。依照连线图进行配置操...

111,128

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧