게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
foreach 구문 + 질문입니다.
게시물ID : programmer_12948짧은주소 복사하기
작성자 : 단아랑
추천 : 0
조회수 : 488회
댓글수 : 5개
등록시간 : 2015/08/25 20:04:35
옵션
  • 본인삭제금지
우선 작성한 코드입니다.

foreach (ListViewItem lvi in lstv.SelectedItems)
{
int num = lvi.Index;
      FileInfo fileinfo = new FileInfo(lvi.Tag + "\\" + lvi.Text);
      if (fileinfo.Exists)
      {
       fileinfo.Delete();
             imagelist.Images.RemoveAt(lvi.Index - cnt);
             lstv.Items.RemoveAt(lvi.Index - cnt);
cnt++

for (int i=num; i<lstv.Count; i++)
            {
lstv.Items[i].ImageIndex = i;
            }
            lstv.Refresh();
}
}
           

foreach 구문 질문입니다.
리스트뷰에서 다중선택을 해서
삭제하는 코드를 아래와같이 작성했는데
알고리즘이 마음에 안들어서 질문드려봅니다.

삭제할 index를 foreach문으로 가지고 오게되면
오름차순으로 반복문이 되서
리스트뷰에 0~10까지 있을때 1,2,5,7을 선택했다면
1,2,5,7순으로 index를 가지고 와서
파일삭제하고, 이미지리스트와 리스트뷰에 있는 목록을 제거합니다.


여기서 문제가 있습니다.
foreach에서 오름차순으로 값이 들어올때
물론 아래와 같이 for을 돌려서하면 정상적으로 되는데
1,2,5,7을 삭제했다면
1~9 = 9
1~8 = 8
3~7 = 5
4~6 = 3
for문이 돌아가는데 27번입니다.

만약, 
foreach에서 내림차순으로 값이 들어올때
7~9 = 3
5~8 = 4
2~7 = 6
1~6 = 6
for문은 19번입니다.

아래와 같이 했을때 더 효율이 좋습니다.

데이터가 얼만큼 들어올지 확실하지 않아서 질문드려봅니다. 알고가는게 좋을것 같아서요;;

---------
아래는 질문 요약입니다.;
foreach문을 사용 했을때 값을 내림차순으로 받을수 있는지 궁금합니다.
굳이 foreach문이 아니더라도 다른방법으로 처리할수 있는지 궁금합니다.









 
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호