找回密码
 立即注册

QQ登录

只需一步,快速开始

mosquito

初级会员

24

主题

138

帖子

328

积分

初级会员

积分
328

[已处理] 删除图片的问题

mosquito
初级会员   /  发表于:2016-3-30 09:00  /   查看:4411  /  回复:7
您好:
       我现在遇到这么一个问题,我用_ocrDocument.Pages.InsertPages(pageIndex, fileName, firstPage, lastPage, null);这个方法添加了10张图片,但是现在我想把第2、3、4、6张删除掉,我想用下面的方法删除
  1. foreach (IOcrPage ocrpage in _ocrDocument.Pages)
  2.                     {
  3.                         if (_ocrDocument.Pages.IndexOf(ocrpage)==1|_ocrDocument.Pages.IndexOf(ocrpage)==2|_ocrDocument.Pages.IndexOf(ocrpage)==3|_ocrDocument.Pages.IndexOf(ocrpage)==5)
  4.                         {
  5.                             _ocrDocument.Pages.Remove(ocrpage);
  6.                         }
  7.                     }
复制代码
但是删除掉第二个ocrpage后感觉 _ocrDocument.Pages这个就好像发生变化了,删除后面的时候回报错,我想问下我要是想实现批量删除应该怎么实现

7 个回复

倒序浏览
AvoCaDolol活字格认证 Wyn认证
社区贡献组   /  发表于:2016-3-30 09:38:55
沙发
嗯~~~这个~~~~属于.NET基础问题。

Collection是一个List对象,每删除一个,整个List会重建,所以Index就会变化。
我举个例子:
有个List<string>,里面存了A,B,C,D四个字母,如果我Remove掉Index==2的字母,剩下的应该是:A,B,D
这个时候,Index==2的字母是D。
不知道我说的是不是清楚。
所以想要删除,应该用对象的方式来进行,在Pages.Remove方法需要放对象,你可以先把对象取出来,然后进行移除。移除要放在一起进行。用两个循环来做,先循环判断页码,然后创建一个List<IOcrPage>列表,将需要删除的对象都添加进去,然后循环这个列表进行移除就可以了。
谢谢。
回复 使用道具 举报
mosquito
初级会员   /  发表于:2016-3-30 10:11:17
板凳
  1. List<IOcrPage> listPage = new List<IOcrPage>();
  2.                     foreach (IOcrPage ocrpage in _ocrDocument.Pages)
  3.                     {
  4.                         if(_ocrDocument.Pages.IndexOf(ocrpage)==1|_ocrDocument.Pages.IndexOf(ocrpage)==2|_ocrDocument.Pages.IndexOf(ocrpage)==3|_ocrDocument.Pages.IndexOf(ocrpage)==5)
  5.                         {
  6.                             listPage.Add(ocrpage);
  7.                         }
  8.                     }
  9.                     foreach (var page in listPage)
  10.                     {
  11.                         _ocrDocument.Pages.Remove(page);
  12.                     }
复制代码

这个样子?
回复 使用道具 举报
AvoCaDolol活字格认证 Wyn认证
社区贡献组   /  发表于:2016-3-30 10:25:04
地板
回复 使用道具 举报
mosquito
初级会员   /  发表于:2016-3-30 11:13:20
5#
感觉写着这么别扭呢,您要是批量删除的话也是这样处理吗?有没有高级点的方法
回复 使用道具 举报
AvoCaDolol活字格认证 Wyn认证
社区贡献组   /  发表于:2016-3-30 12:29:16
6#
mosquito 发表于 2016-3-30 11:13
感觉写着这么别扭呢,您要是批量删除的话也是这样处理吗?有没有高级点的方法

List删除就是这样,关键是判断条件决定了只能这么做。
如果如果判断条件能够跟本身的内容相关的话,一个循环就可以搞定
回复 使用道具 举报
mosquito
初级会员   /  发表于:2016-3-30 13:29:16
7#
好吧,谢谢啦
回复 使用道具 举报
AvoCaDolol活字格认证 Wyn认证
社区贡献组   /  发表于:2016-3-30 13:33:55
8#
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部