Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检查DateTime是否大于另一个DateTime的正确方法_C#_Datetime_For Loop - Fatal编程技术网

C# 检查DateTime是否大于另一个DateTime的正确方法

C# 检查DateTime是否大于另一个DateTime的正确方法,c#,datetime,for-loop,C#,Datetime,For Loop,我想检查CustomFormat中的一个DateTime是否大于另一个DateTime,但是在代码删除了很多项之后,检查就可以了,而且没有一项是正确的。这是我的密码。作业是删除任何超过3天的ListViewItem for (int i = 0; i < lvValid.Items.Count; i++) { if (DateTime.Now.AddDays(-3) > DateTime.Parse(lvValid.Items[i].SubItems[1].Text))

我想检查CustomFormat中的一个DateTime是否大于另一个DateTime,但是在代码删除了很多项之后,检查就可以了,而且没有一项是正确的。这是我的密码。作业是删除任何超过3天的ListViewItem

for (int i = 0; i < lvValid.Items.Count; i++)
{
    if (DateTime.Now.AddDays(-3) > DateTime.Parse(lvValid.Items[i].SubItems[1].Text))
    {
        lvValid.Items[i].Remove();
    }
}
for(int i=0;iif(DateTime.Now.AddDays(-3)>DateTime.Parse(lvValid.Items[i].SubItems[1].Text))
{
lvValid.Items[i]。Remove();
}
}

我已经试过foreach了,但没用。它每隔一秒就删除一个元素,但这是不正确的

向前循环的一个大问题是,如果删除一个项目,那么剩余项目的索引将向左移动。因此,在
i==1
处,删除后下一项将位于
1
。然后,
i
将递增,并跳过前一项下一项

我建议使用反向循环:

for (int i = lvValid.Items.Count - 1; i >= 0 ; i--)
{
    if (DateTime.Now.AddDays(-3) > DateTime.Parse(lvValid.Items[i].SubItems[1].Text))
    {
        lvValid.Items[i].Remove();
    }
}

我个人建议使用原始数据。首先根据您的条件筛选数据,然后重新填充
列表视图

也许您应该反转for循环,而不是使用
.AddDays(-3)

for(int i=lvValid.Items.Count-1;i>=0;i--)
{
如果(DateTime.Now如果要使用前向循环(如果删除事项的顺序),则在不删除项目时,应增加
i++

// we don't want redrawing on each removing (i.e. lvValid blicking)
lvValid.BeginUpdate();

try 
{
    for (int i = 0; i < lvValid.Items.Count; ) // don't icrement i here... 
        if (DateTime.Now.AddDays(-3) > DateTime.Parse(lvValid.Items[i].SubItems[1].Text))
            lvValid.Items[i].Remove();
        else 
            ++i; // ... but there
}
finally 
{
    // when finisihing removing, redraw lvValid if required 
    lvValid.EndUpdate();
}
//我们不希望每次删除时都重新绘制(即lvValid blicking)
lvValid.BeginUpdate();
尝试
{
for(int i=0;iif(DateTime.Now.AddDays(-3)>DateTime.Parse(lvValid.Items[i].SubItems[1].Text))
lvValid.Items[i].Remove();
其他的
++i、 //…但是在那里
}
最后
{
//完成移除时,如果需要,重新绘制LVL
lvValid.EndUpdate();
}

“在customformat中”,是否已验证已正确解析解析的值?能否显示
lvValid.Items[i]子项[1]的示例.Text
?它的格式是什么?此外,该循环最多会删除其他所有项目,因为一旦删除一个项目,下列项目会向上移动一个索引,然后跳过。通常,会使用反向运行的循环删除项目LvValid.items[i]。子项[1].Text示例为:2019.08.06 8:50:43是否修复了删除的项目,因此现在可以正确执行所有操作?或是向前循环,但当项目被删除时,请执行
i--
以避免跳过项目。更容易执行向后循环imho。@LarryPetshow我很高兴听到它可以工作。不过,我还是建议在基础数据模型上工作,而不是在e视觉表现。:)
// we don't want redrawing on each removing (i.e. lvValid blicking)
lvValid.BeginUpdate();

try 
{
    for (int i = 0; i < lvValid.Items.Count; ) // don't icrement i here... 
        if (DateTime.Now.AddDays(-3) > DateTime.Parse(lvValid.Items[i].SubItems[1].Text))
            lvValid.Items[i].Remove();
        else 
            ++i; // ... but there
}
finally 
{
    // when finisihing removing, redraw lvValid if required 
    lvValid.EndUpdate();
}