到目前为止我做到了但是它没有工作而不是让我删除所有列表项目的具体日期请帮助
private void button1_Click_1(object sender, EventArgs e)
{
List<RentalCar> listBox1snew = new List<RentalCar>();
for (int i = 0; i < listBox1s.Count; i++)
{
if ((DateTime.Now.Day - listBox1s[i].WOF.Day) <= 7)
{
listBox1.Items.Insert(0, listBox1snew[i]);
}
}
listBox1.DataSource = listBox1snew;//add car to listbox
}
答案 0 :(得分:1)
首先,检查日期的逻辑应该是:
DateTime.Now.Subtract(listBox1s[i].WOF).Days <= 7
您正在将ListBox数据源设置为listBox1snew,但您永远不会添加任何内容到listBox1snew!
答案 1 :(得分:1)
listBox1.Items.Insert(0, listBox1snew[i]);
这没有任何意义。 listBox1snew
为空。我相信你的意思是listBox1s[i]
。
listBox1.DataSource = listBox1snew;
这更没意义。首先,您要在listBox1.Items
中插入项目,然后覆盖DataSource
,有效地忽略Items
。此外,您没有以任何方式修改listBox1snew
,因此它仍然是空的!
我想到你在追求什么
。listBox1s
复制到listBox1snew
。DataSource
设置为listBox1snew
。这看起来像是:
private void button1_Click_1(object sender, EventArgs e)
{
List<RentalCar> listBox1snew = new List<RentalCar>();
for (int i = 0; i < listBox1s.Count; i++)
{
if (DateTime.Now.Subtract(listBox1s[i].WOF).Days <= 7)
{
// Copy from listBox1s to listBox1snew
listBox1new.Add(listBox1s[i]);
}
}
// Use listBox1new as new data source
listBox1.DataSource = listBox1new;
}
此外,您可以使用LINQ:
轻松表达此过滤器private void button1_Click_1(object sender, EventArgs e)
{
listBox1.DataSource = listBox1s.Where(x => DateTime.Now.Subtract(x.WOF).Days <= 7).ToList();
}
答案 2 :(得分:0)
DateTime.Now.AddDays(-7) <= listBox1s[i].WOF
答案 3 :(得分:0)
你应该先减去两天,然后找出天差。
private void button1_Click_1(object sender, EventArgs e)
{
List<RentalCar> listBox1snew = new List<RentalCar>();
for (int i = 0; i < listBox1s.Count; i++)
{
if ((DateTime.Now - listBox1s[i].WOF).Days <= 7)
{
listBox1snew .Items.Insert(0, listBox1s[i]);
}
}
listBox1.DataSource = listBox1snew;//add car to listbox
}