항목 목록과 전체 목록의 하위 집합 인 "selected"목록이 있습니다. 하위 목록 항목을 전체 목록의 맨 아래로 이동하는 함수를 구현하려고합니다.List.Move를 사용하여 항목을 목록의 맨 아래로 이동
예를 들어, 요소 2,4, &을 목록 0,1,2,3,4,5,6,7,8,9에서 선택한 경우이 함수는 최종 결과를 원합니다. 0,1,3,5,7,8,9,2,4,6
현재는,이 같은 것을 사용하려고 해요,하지만 난 정의하는 방법을 잘 모르겠어요 moveTo
:
public object MoveLoopToBottom()
{
if (selectedLoops.Count < 1)
return null;
foreach (ProfilerLoop selected in selectedLoops)
{
int moveFrom = ClonedLoops.IndexOf(selected);
int moveTo = ;
ClonedLoops.Move(moveFrom, moveTo);
}
return null;
}
List.Move
의 작동 방식은 다음과 같습니다. Generic List - moving an item within the list 그러나 "목록의 끝으로 이동"할 수없는 것으로 보입니다. List.Move
(최대)까지 "두 번째 - 마지막"위치로 이동할 수 있습니다 (목록의 끝으로 이동하려고하면 "OutOfRange Exception"이 발생 함).
대신 List.Move
List.RemoveAt
또는
List.Add
)
List.Remove
다음
List.Add
을하고 있지만
List.Remove
를 호출 시도하는 것은 나에게 내 foreach 루프 반복의 문제를 제공합니다 (
List.Move
하지 않는 경우).
제안 사항?
는, 선택한 항목의 새 목록을 작성 원래 목록에서 그, 그럼 마지막에 추가 제거 (내 독특한 상황에 작동하지 않았다) – stuartd
@stuartd'Except' 다음에'ToList()'를 추가합니다 ('List'에'AddRange' 메쏘드가 존재하기 때문에'var newList = originalList.Except (selectedItems) .AddRange (selectedItems) IEnumerable '). –
Styxxy
'list = list.OrderBy (i => selectedList.IndexOf (i))는 어떨까요? ToList();'? 'selectedList'에없는 항목은'IndexOf'가 -1이 될 것이고'selectedList'에 나타나는 순서대로 표시되기 때문에 다른 것들을 넣을 것입니다. – juharr