如何在我的列表框中接下来的七天并删除其他的?

时间:2013-01-20 09:58:47

标签: c#

到目前为止我做到了但是它没有工作而不是让我删除所有列表项目的具体日期请帮助

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
}

4 个答案:

答案 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
    }