Languege/C# & ASP.NET / / 2022. 1. 24. 00:06

LINQ(Language-Integrated Query)

LINQ(Language-Integrated Query)란?

C# 언어에 직접 쿼리 기능을 통합하는 방식으로 기반으로 하는 기술 집합 이름입니다.

즉 별도의 과정이나 IntelliSense의 지원없이 간단한 문자열로 표현할 수 있고 언어 키워드 및 친숙한 연산자를 사용해서 강력한 형식의 개체 컬렉션에 대해 쿼리를 작성할 수 있습니다.

 

class LINQQueryExpressions
{
    static void Main()
    {

        // Specify the data source.
        int[] scores = new int[] { 97, 92, 81, 60 };

        // Define the query expression.
        IEnumerable<int> scoreQuery =
            from score in scores
            where score > 80
            select score;

        // Execute the query.
        foreach (int i in scoreQuery)
        {
            Console.Write(i + " ");
        }
    }
}
// Output: 97 92 81

위와 같은 형태로 쿼리를 실행할 수 있고 C#의 문법에 따라서 조금 더 직관적으로 사용이 가능합니다.

 

class CompareLists  
{
    static void Main()  
    {  
        // Create the IEnumerable data sources.  
        string[] names1 = System.IO.File.ReadAllLines(@"../../../names1.txt");  
        string[] names2 = System.IO.File.ReadAllLines(@"../../../names2.txt");  
  
        // Create the query. Note that method syntax must be used here.  
        IEnumerable<string> differenceQuery =  
          names1.Except(names2);  
  
        // Execute the query.  
        Console.WriteLine("The following lines are in names1.txt but not names2.txt");  
        foreach (string s in differenceQuery)  
            Console.WriteLine(s);  
  
        // Keep the console window open in debug mode.  
        Console.WriteLine("Press any key to exit");  
        Console.ReadKey();  
    }  
}  
/* Output:  
     The following lines are in names1.txt but not names2.txt  
    Potra, Cristina  
    Noriega, Fabricio  
    Aw, Kam Foo  
    Toyoshima, Tim  
    Guy, Wey Yuan  
    Garcia, Debra  
     */

위와 같은 형태로 두 데이터간의 차집합 혹은 합집합을 구할 수 있고, 정규식을 결합하거나 특정 단어가 나오는 횟수를 세는 등의 로직을 쿼리 형태로 간단하게 구현이 가능합니다.

from, where, select등으로 실행이 가능하고 foreach문을 사용할때는  IEnumerable 또는 IEnumerable<T>이 필요합니다. IEnumerable<T> 또는 제네릭 IQueryable<T> 같은 형태로 사용되어야 합니다.

Count, Max, Average  First등의 집계 작업이 가능합니다.

그리고 필터링, 순서 지정, 그룹화, 조인, 프로젝션또한 가능하여 이를 활용하면 효율적으로 프로그램의 작성이 가능할 것입니다.

'Languege > C# & ASP.NET' 카테고리의 다른 글

[ASP.NET MVC] Controller 에서 View 로 데이터 전달  (0) 2022.02.10
[ASP.NET MVC] Razor Syntax 정리  (0) 2022.02.10
프로 ASP.NET 1~6장 후기  (0) 2022.01.06
ASP .NET 시작하기  (0) 2022.01.03
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유