有一个应用需求是取出某个目录里的文件及其各级子目录里的文件的路径,然后一一比对数据表里的某一字段。如果查找到有条记录该字段值含有文件的路径,则不作任何操作,否则将该文件移走。我是这么设想的
1. 遍历指定文件夹里的所有文件
2. 遍历过程中取出文件的路径,然后和数据库里的数据做比较
3. 符合条件的移动到其他目录我的问题是,对于遍历文件过程中的比较我该怎么操作好呢?
是不是每一次都去连接数据库然后用
select * from tb where charindex( '文件路径 ',fieldA) > 0 这样的sql语句去判断是否符合条件。不过这种方法会不会很消耗数据库的资源啊(表内有3万+记录),对应目录里的文件也大概有3-4万个。
是否还有其他什么好的处理方法呢?

解决方案 »

  1.   

    把数据加到datatable中,然后没找到一个目录,就用datatable的Select方法选一下
      

  2.   

    提供个思路,把文件夹的路径表与数据库中的数据用linq作下join连接,没join上的就是你要remove掉的路径,下面是copy了一个例子var query = from c in customers
                join o in orders on c.CustomerId equals o.CustomerId
                where o.OrderId == 2
                select c;
    foreach (var customer in query)
    {
        Console.WriteLine("Id:{0}, Name:{1}", customer.CustomerId, customer.Name);