안녕하세요 마블랑입니다.
C# 닷넷 프레임워크에서 다른 프로그래밍 언어의 기능에는 없는 유용한 기능중에 하나가 List<>라고 생각합니다.
특히 구조체 단위의 데이터 리스트를 사용할때 굉장히 좋습니다.
아마도 다른 프로그래밍 언어에서는 배열을 사용해야 할텐데요.
그러면 배열의 위치인 인덱스나 메모리등을 잘 관리해야할것입니다.
List<> 는 요소를 잘 추가해주기만 하면 데이터 삭제나 데이터 변경이 아주 용이 합니다.
게다가 배열로도 변환할 수도 있어 닷넷으로 프로그래밍 할때는 배열보다는 List<>를 먼저 사용하곤 합니다.
이번 포스팅은 이 List 클래스에 이미 데이터가 들어가 있는 상태에서 어떻게 데이터를 찾을 수 있는지 알아보겠습니다.
배열같은 경우나 List 클래스의 기능을 이용하지 않는다면 아래처럼 반복문을 돌려가면 데이터를 일일이 찾아야할텐데요
List<Temp_struct> TempList = new List<Temp_struct>();
//테스트 데이터 추가
for (int i = 0; i < 10; i++)
{
Temp_struct record = new Temp_struct();
record.TempString = "abcdef"+i
record.number = i;
TempList.Add(record);
}
//검색
for(int i =0 ; i <TempList.Count();i++){
if(TempList[i].TempString =="abcdef1"){
//데이터 검색
}
}
위와 같은 방법도 있지만 List<> 클래스에서 제공해주는 함수를 이용하면 코드의 양을 더 줄일수 있습니다.
// 데이터를 포함한 구조체를 검색할때
Temp_struct result = TempList.Find(x => x.TempString == "abcdef1");
//성공시 해당 검색 결과를 가진 구조체 반환
//실패시 구조체 초기값 반환
//데이터를 포함한 구조체의 List 내의 인덱스를 구할때
int nIndex = TempList.FindIndex(x => x.TempString == "abcdef1");
//성공시 해당 구조체의 인덱스 반환 ( 0 ~ )
//실패시 -1 반환
구조체를 통째로 반환하는 방법과 인덱스만 찾는 방법 두가지가 있습니다.
구조체를 통째로 반환할때는 Find 함수, 인덱스만 찾을때는 FindIndex가 있는데요
순차적으로 검색했을때 가장 먼저 찾은 구조체를 반환하니 모든 데이터를 검색하서 반환받으려면 List<> 클래스의 다른 FInd 함수를 사용해야할듯 합니다.
이상 마블랑이었습니다.
읽어주어서 고맙습니다.
'개발 이야기 > C# 이야기' 카테고리의 다른 글
C# Canvas 위에 도형 원 그리기 (0) | 2020.12.23 |
---|---|
C# 폴더 파일 읽기 윈도우탐색기 만들기 (0) | 2020.12.23 |
C# WebBrowser NavigateToString 한글 (0) | 2020.11.11 |
C# 모니터 정보 가져오기 (0) | 2020.10.23 |
C# 윈도우 프로세스 실행매개변수 (0) | 2020.10.22 |
댓글