본문 바로가기
C++ 200제/코딩 IT 정보

[C# Listview Linq] - 선택 항목 리스트, 선택된 인덱스 (toList, Index)

by vicddory 2019. 10. 21.

소개할 방법은 2개입니다.

C# 리스트뷰 LINQ 활용하는 방법인데요. 하나는 Multi Select 값이 true로 설정되었을 때, 선택된 모든 항목을 list로 받는 것이고, 다른 하나는 Listview에서 선택된 하나의 항목에 인덱스(위치)를 가져오는 것입니다.


1. c# listview 선택된 값 list 받기

1
2
3
4
5
listView.Items.Cast<ListViewItem>().Where(
        x => x.Selected == true).ToList().ForEach(item =>
{
    // item 활용
});
cs


2번 라인 x.Selected == true를 활용해 선택된 항목 리스트를 가져옵니다.

ToList(); 식으로 끝내면 list<>를 가져올 수 있고, 예시처럼 ForEach를 사용하면 선택 항목 발견 그 즉시 어떤 동작을 할 수 있습니다.


상황에 맞춰 사용하시면 됩니다.


2. c# listview 선택된 인덱스

1
2
3
4
5
6
7
8
9
10
private int GetListviewIndex(string name)
{
    IEnumerable<ListViewItem> lv = listView.Items.Cast<ListViewItem>();
 
    var index = from x in lv
       where x.Text == name
       select x.Index;
 
    return Int32.Parse(index.First().ToString());
}
cs


c# 함수는 선택된 리스트뷰 항목의 인덱스를 반환합니다. 그러기 위해 리스트뷰 컬럼 1번에 해당하는 문자열을 전달 받습니다.


6번 라인에서 x.Text가 인자로 받은 string 문자열과 같은지를 비교하죠. 7번 라인 select x.Index를 활용해 선택된 항목의 인덱스를 반환합니다.



LINQ는 처음 사용할 때 어렵지만, 익숙해지면 편하네요.



C# LINQ 관련 글

C# Linq 예제, FileInfo 오래된 파일 10개 삭제 (File.Delete)

C# List + Lambda + Linq 문법 예제 13개, 람다 리스트 축약

C# 파일 크기 0은 읽지 않기, FileInfo linq query

[C# Json] LINQ, JsonPath로 데이터 가져오기

댓글