c# 高手 赐教 对时间进行汇总

来源:百度知道 编辑:UC知道 时间:2024/05/14 14:25:55
最近弄一个小程序,搞不定了
如下:
我有一堆jpg文件,1000个吧,数码相机拍的,这些相片是连续拍摄的。
我要判定在同一秒内至少要n张相片,少于n的不合格,输入这些相片的名字到一个txt文件中。
直接来代码吧,数据库 or 数组,随便用,
用C# ,“输入这些相片的名字到一个txt”应为“输出…………”

获取文件时间很简单,我要的是下面的怎么 查询 ,在这一秒内的相片数,我怎么查?
由于是连续拍摄,但不能用time++,中间也许有停车,停车的时候就存在没拍的断点。
思路明白,可是就是写不出来。

--建立表
CREATE TABLE [dbo].[照片](
[序号] [int] IDENTITY(1,1) NOT NULL,
[文件名] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[日期] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
CONSTRAINT [PK_照片] PRIMARY KEY CLUSTERED
(
[序号] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

--日期为什么不使用datatime?数据库有毫秒,所以使用varchar

--sql:
select * from 照片 where 日期 in (
select
日期
from
dbo.照片
group by
日期
having count(*)<N
)

FileInfo类里面的LastWriteTime属性判断文件最后的写入时间,然后在判断多少文件在指定的时间段里面,不在的输出(FileInfo的Name属性)

思路:

建立一个表,例如:相片, 字段: 文件名, 拍摄时间

然后,使用 DirectoryInfo.GetFiles 功能,把所有的JPG文件 和 文件对应的 拍摄时间 存入刚才建立的表。

然后,执行SQL

SELECT 文件名 FROM 相片 WHERE 拍摄时间 IN (SELECT 拍摄时间 FROM 相片 GROUP BY 拍摄时间 HAVING COUNT(*) >= n)

n是你自己设定的值。