欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

LINQ重写博客垃圾图片回收算法

程序员文章站 2024-03-06 09:27:19
思路很简单,从所有blog model中解析出所有文章使用的图片文件名,排除站外引用,放入一个list usedpiclist。再遍历图片上传文...
思路很简单,从所有blog model中解析出所有文章使用的图片文件名,排除站外引用,放入一个list<string> usedpiclist。再遍历图片上传文件夹,把所有图片文件的结果加入fileinfo[] fiallpiclist。然后比较usedpiclist和fiallpiclist,找出所有fiallpiclist中有,而usedpiclist中木有的图片,就是未被任何文章引用的垃圾图片了。
原先这个比较算法是用传统方法写的,很蛋疼,用了两重循环,一个标志位才解决问题:
复制代码 代码如下:

list<fileinfo> garbagepiclist = new list<fileinfo>();
for (int k = 0; k < fiallpiclist.length; k++)
{
bool found = false;
for (int l = 0; l < usedpiclist.count; l++)
{
if (fiallpiclist[k].name == usedpiclist[l].tostring())
{
found = true;
}
}
if (!found)
{
garbagepiclist.add(fiallpiclist[k]);
}
}

今天用linq重写了一下:
复制代码 代码如下:

list<fileinfo> garbagepiclist = new list<fileinfo>();
var query = from pic in fiallpiclist
where !usedpiclist.contains(pic.name)
select pic;
garbagepiclist = query.tolist();

清晰明了