내가 보려고 정리 - LINQ

Haylee·2024년 5월 10일

STUDY

목록 보기
4/4
post-thumbnail

LINQ

Language Integrated Query, .NET 언어에서 데이터 집합을 쿼리하는 기능을 제공하는 통합된 쿼리 기술이고, C# 및 Visual Basic과 같은 언어에서 활용되고 있음

  • 데이터베이스, XML 문서, 컬렉션 등 다양한 형식의 데이터 소스로 쿼리 작성 가능
  • LINQ를 사용하여 데이터를 검색, 필터링, 정렬 및 변환 가능 => 원하는 데이터만 가져와!

LINQ 구조

1. 질의 구문(Query Syntax)

SQL문과 유사해서 사용이 어려울 것 같지는 않음! 단, 복잡한 쿼리는 불가능!!
SQL문에서는 SELECT가 먼저 나오지만, LINQ문에서는 SELECT가 제일 마지막에 등장

  • from - 어떤 데이터로부터 값을 가져올건지
  • where - 데이터 조건
  • select - 어떤 항목을 가져올건지
Dim query = From student In students
            Where student.Age > 20
            Order By student.LastName
            Select student.FirstName, student.LastName

2. 메서드구문(Method Syntax)

LINQ의 메서드를 사용하여 데이터를 쿼리하고 조작하는 방법
일반적으로 확장 메서드 형식으로 사용되며, 메서드 체이닝을 통해 쿼리를 작성

Dim query = students.Where(Function(student) student.Age > 20)
                    .OrderBy(Function(student) student.LastName)
                    .Select(Function(student) New With { .FirstName = student.FirstName, .LastName = student.LastName })

메서드 예시

특정 인덱스의 값 가져오기

  • ElementAt() : 특정 인덱스의 값을 반환, Enumerable 클래스에 정의, 메서드를 호출하는 데이터 집합이 null로 초기화되거나 메서드의 인자로 전달된 인덱스 값이 데이터 집합의 범위를 벗어나면 런타임 에러가 발생
  • ElementAtOrDefault() : 특정 인덱스의 값을 반환, Enumerable 클래스에 정의, 데이터 집합이 빈 값이거나 메서드의 인자로 전달된 값이 데이터 집합의 범위를 벗어나더라도 예외가 발생하지 않음, 범위를 벗어나는 경우 데이터 집합 타입의 Default 값을 반환 (null은 예외 발생함)

딕셔너리로 변환하기

  • String 배열을 키 값으로 Index를 밸류 값으로 딕셔너리 생성
sample = {"a", "b", "c", "d", "e"}
dictSample = sample.Select(Function(s, i) New With { Key .Key = s, Key .Value = i }).ToDictionary(Function(x) x.Key, Function(x) x.Value)
  • String 배열을 키 값으로 또 다른 배열을 밸류 값으로 딕셔너리 생성
sample_key = {"A", "B", "C"}
sample_value = {"1", "2", "3"}
dictKV = sample_key.Zip(sample_value, Function(k, v) New With { Key .Key = k, Key .Value = v }).ToDictionary(Function(x) x.Key, Function(x) x.Value)

리스트, 배열 변환

  • sample.ToList / sample.ToArray 변수 뒤에 메서드 사용하여 다른 유형으로 변경 가능
  • 딕셔너리의 값을 리스트로 변환하는 방법
    • dict.Keys.ToList
    • dict.Values.ToList







참고 : https://developer-talk.tistory.com/

0개의 댓글