有个地方更正一下:textbox3中输入5,时间对话框1输入2010年09月08日18:09,时间对话框2输入2010年09月09日01:30,

解决方案 »

  1.   

    static int Count(List<string> lst)
      {
      List<string> lst2 = new List<string>();
      foreach (string x in lst)
      if (!lst2.Contains(x)) lst2.Add(x);
      return lst2.Count;
      }var q=from item in lst
      group item by item into g
      select new {str=g.key,number=g}
      

  2.   

      OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\mydatabase.mdb;User Id=admin;Password=; ");
                conn.Open();
                OleDbCommand cmd=new OleDbCommand("select ......",conn)
    自己改吧
      

  3.   

    参考下面的代码    DateTime time1 = DateTime.Parse("2010/9/8 18:06"); // 开始时间
        DateTime time2 = DateTime.Parse("2010/9/9 1:30"); // 结束时间
        int amount = 5; // 存货量
                
        string conn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\mydatabase.mdb";
        string sql = "select [存货量] from [表名] where [时间]>=@time1 and [时间]<=@time2 order by [时间]";
        OleDbCommand cmd = new OleDbCommand(sql, new OleDbConnection(conn));
        cmd.Parameters.Add(new OleDbParameter("time1", time1.ToString("yyyyMMddHH")));
        cmd.Parameters.Add(new OleDbParameter("time2", time2.ToString("yyyyMMddHH")));    OleDbDataAdapter adapter = new OleDbDataAdapter(cmd);
        DataTable dt = new DataTable();
        adapter.Fill(dt);    // 统计存货量连续小于指定数值的记录数
        int count = 0, max_count = 0;
        foreach (DataRow row in dt.Rows)
        {
            if ((int)row["存货量"] < amount)
                count++;
            else
            {
                max_count = Math.Max(count, max_count);
                count = 0;
            }
        }
        MessageBox.Show(max_count.ToString());
      

  4.   

    楼上的高手大哥:请教您,我在textbox中输入的时间是datetime类型,而数据库中像:2010093001这样的数据是文本型,可以直接用:[时间]>=@time1 and [时间]<=@time2 相比较吗?另外:@这个字符是啥意思啊,太着急了 谢谢
      

  5.   

    因为2010093001这样的文本是有规律的,长度也固定,所以可以用文本方式来比较,小的字符串表示日期也较早。
    @xxx表示一个参数,查询时替换成实际的值