遍历比较时间是否达到设定来执行自动化动作的问题

我把需要自动化执行的动作相关内容信息存在json文件里,json文件模板如下:
{
"SettingFXList": [
{
"ID": "3000",
"Channel": 0,
"Title": "Chanel1",
"BeginTime": "0:0:1:0",
"EndTime": "0:15:7:12"
},
{
"ID": "3001",
"Channel": 4,
"Title": "Channle5",
"BeginTime": "0:2:2:0",
"EndTime": "0:2:8:0"
},
{
"ID": "3002",
"Channel": 2,
"Title": "Channel3",
"BeginTime": "0:2:2:3",
"EndTime": "0:0:35:0"
}
]
}
C# 语言用以下语句比较外部输入时间和json文件内容时间是否匹配,匹配的就执行:
string path = Application.StartupPath;
string fileName = comboBox1.SelectedItem.ToString();
StreamReader file = File.OpenText(path+"\"+"scripts"+"\" + fileName + ".json"); //open the selected json file in floder \scripts
JsonTextReader reader = new JsonTextReader(file);
JObject jsonObject = (JObject)JToken.ReadFrom(reader);
while (true)
{
for (int i = 0; i < jsonObject.Count; i++)
{
string BeginTime = jsonObject["SettingFXList"][i]["BeginTime"].ToString();
string EndTime = jsonObject["SettingFXList"][i]["EndTime"].ToString();
int Channel = int.Parse(jsonObject["SettingFXList"][i]["Channel"].ToString())
if (BeginTime == WaveInTimecode)
{
leds[Channel].LedStatus = true;
Console.WriteLine(TurnRelayOn[Channel]);
break;
}
if (EndTime == WaveInTimecode)
{
leds[Channel].LedStatus = false;
Console.WriteLine(TurnRelayOff[Channel]);
break;
}
if (WaveInTimecode.CompareTo(BeginTime) == 1 || (WaveInTimecode.CompareTo(EndTime) == 0))
{
leds[Channel].LedStatus = true;
Console.WriteLine(TurnRelayOn[Channel]); //if the program start in the middle, this will check if any channel need to be set to On
break;
}
}
计划利用串口发送数据,手边没有串口设备,就用ConsoleWrite,先显示测试代码是否发送。
我的问题是,当json文件内容很多,比如几百上千条,会不会导致遍历比较耗时过大,第一次遍历没有达到时间,而再次遍历已经超过时间,导致有些设定动作被跳过。
有没有更高效的方法,来比较样本json中的BeginTime和EndTime,从而执行动作?
我有想法是把已经比较匹配并执行Time的排除出去,这样如果我按照BeginTime排序json的话,BeginTime的比较每次都只需要比较一个数据,但是不知道该怎么写代码,还是个很新,只会ctrl+C+V
请各位不吝赐教。