본문 바로가기

Study/Programming

C# LINQ


중복값 제거

var temp = colOBJ.Select(t => t.RESULT).Distinct();

셀렉트

from word in BOOKs

select word

조인

var salesHistory = from salesDetail in adventureWorks.Sales.SalesOrderDetails

join salesHeader in adventureWorks.Sales.SalesOrderHeaders

on salesDetail.SalesOrderID equals salesHeader.SalesOrderID

그룹바이

            var query = from p in pList 
                        group p by p.Buseo into newSelect 
                        select new { 
                            Buseo = newSelect.Key  
                        }; 
               foreach (var item in query) 
               {              
                   MessageBox.Show(item.Buseo); 
               }

그룹바이2

            var query = from p in packages 
                        group p by p.Weight into newSelect 
                        select new 
                        { 
                            Buseo = newSelect.Key , 
  cnt = newSelect.Count() //그룹바이갯수를 알수 있습니다.

                        };

            foreach (var item in query) 
            { 
                Response.Write(item.Buseo.ToString() + " cnt:" +item.cnt.ToString()+ "<br>"); 
            }

public void Linq80() { 
   List products = GetProductList(); 
   var categories = 
      from p in products 
group p by p.Category into g 
      select new {Category = g.Key, TotalUnitsInStock = g.Group.Sum(p => p.UnitsInStock)}; 
   ObjectDumper.Write(categories); 
}

WHERE 문

from n in BOOKs where n.PostID < 5

select n

var soldOutProducts =

        from p in products

        where p.UnitsInStock == 0

        select p;

두개이상의 조건

    var expensiveInStockProducts =

        from p in products

        where p.UnitsInStock > 0 && p.UnitPrice > 3.00M

        select p;

정렬

publicvoid Linq28() { 
string[] words = { "cherry", "apple", "blueberry" }; 
var sortedWords = 
from w in words 
orderby w descending 
select w; 
Console.WriteLine("The sorted list of words:"); 
foreach (var w in sortedWords) { 
Console.WriteLine(w); 

}

Count  , Distinct

   int[] factorsOf300 = { 2, 2, 3, 5, 5 };

   int uniqueFactors = factorsOf300.Distinct().Count();

   Console.WriteLine("There are {0} unique factors of 300.", uniqueFactors);

스킵 건너뛰기 Skip - Simple

This sample uses Skip to get all but the first 4 elements of the array.

public void Linq22() {

            int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };

            var allButFirst4Numbers = numbers.Skip(4);

            Console.WriteLine("All but first 4 numbers:");

            foreach (var n in allButFirst4Numbers) {

                Console.WriteLine(n);

            }

        }

All but first 4 numbers:

9

8

6

7

2

0

TOP 10

from v in Products.Take(10)

select v

SUM

Enumerable..::.Sum<(Of <(TSource>)>) 메서드 (IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Double>)>))

업데이트: 2007년 11월

입력 시퀀스의 각 요소에 대해 변형 함수를 호출하여 가져온 :Track('ctl00_MTContentSelector1_mainContentContainer_ctl00|ctl00_MTContentSelector1_mainContentContainer_ctl09',this);" href="http://msdn.microsoft.com/ko-kr/library/system.double.aspx">Double 값 시퀀스의 합을 계산합니다

class Package 

    public string Company { get; set; } 
    public double Weight { get; set; } 
}

public static void SumEx1() 

    List<Package> packages = 
        new List<Package> 
            { new Package { Company = "Coho Vineyard", Weight = 25.2 }, 
              new Package { Company = "Lucerne Publishing", Weight = 18.7 }, 
              new Package { Company = "Wingtip Toys", Weight = 6.0 }, 
              new Package { Company = "Adventure Works", Weight = 33.8 } };

    double totalWeight = packages.Sum(pkg => pkg.Weight);

    Console.WriteLine("The total weight of the packages is: {0}", totalWeight); 
}

/* 
This code produces the following output:

The total weight of the packages is: 83.7 
*/

LINQ 쿼리 식(C# 프로그래밍 가이드)

업데이트: 2007년 11월

LINQ(통합 언어 쿼리)는 C# 언어(또한 Visual Basic 및 잠재적으로 다른 모든 .NET 언어)에 대한 쿼리 기능의 직접 통합을 기반으로 하는 기술 집합의 이름입니다. LINQ를 사용하면 쿼리가 클래스, 메서드, 이벤트와 같은 고급 언어 구문이 됩니다.

쿼리를 작성하는 개발자에게 가장 많이 표시되는 LINQ의 "통합 언어" 부분은 쿼리 식입니다. 쿼리 식은 C# 3.0에서 소개된 선언적 쿼리 구문으로 작성됩니다. 쿼리 구문을 사용하면 최소한의 코드로 데이터 소스에서 복잡한 필터링, 정렬 및 그룹화 작업을 수행할 수 있습니다. 동일한 기본 쿼리 식 패턴을 사용하여 SQL 데이터베이스, ADO.NET 데이터 집합, .XML 문서 및 스트림, NET 컬렉션의 데이터를 쿼리하고 변환합니다.

다음 예제에서는 전체 쿼리 작업을 보여 줍니다. 전체 작업에는 데이터 소스 만들기, 쿼리 식 정의 및 foreach 문으로 쿼리 실행이 포함됩니다.

http://msdn.microsoft.com/ko-kr/library/bb397676.aspx

항목

설명

쿼리 식 기본 사항(C# 프로그래밍 가이드)

기본적인 쿼리 개념을 소개하고 C# 쿼리 구문의 예제를 제공합니다.

방법: C#에서 LINQ 쿼리 작성

몇 가지 기본적인 쿼리 식 형식의 예제를 제공합니다.

방법: 쿼리 식의 예외 처리(C# 프로그래밍 가이드)

잠재적 예외 throw 코드를 쿼리 식 외부로 이동하는 방법 및 시기를 보여 줍니다.

방법: 여러 소스로 개체 컬렉션 채우기(LINQ)

select 문을 사용하여 여러 소스의 데이터를 새 형식으로 병합하는 방법을 보여 줍니다.

방법: 다양한 방법으로 결과 그룹화(C# 프로그래밍 가이드)

group 절을 사용하는 다양한 방법을 보여 줍니다.

방법: 그룹 그룹화(C# 프로그래밍 가이드)

중첩 그룹을 만드는 방법을 보여 줍니다.

방법: 그룹화 작업에서 하위 쿼리 수행(C# 프로그래밍 가이드)

쿼리의 하위 식을 새 쿼리의 데이터 소스로 사용하는 방법을 보여 줍니다.

방법: 연속 키를 기준으로 결과 그룹화(C# 프로그래밍 가이드)

스트리밍 데이터 소스에 대한 그룹화 작업을 수행할 수 있는 스레드로부터 안전한 표준 쿼리 연산자를 구현하는 방법을 보여 줍니다.

방법: 런타임에 동적으로 조건자 필터 지정(C# 프로그래밍 가이드)

동등 비교에 사용할 임의 개수의 값을 where 절에 제공하는 방법을 보여 줍니다.

방법: 쿼리 결과를 메모리에 저장(C# 프로그래밍 가이드)

foreach 루프를 사용하지 않고도 쿼리 결과를 구체화하고 저장하는 방법을 보여 줍니다.

방법: 메서드에서 쿼리 반환(C# 프로그래밍 가이드)

메서드에서 쿼리 변수를 반환하는 방법 및 이러한 변수를 입력 매개 변수로 메서드에 전달하는 방법을 보여 줍니다.

방법: 사용자 지정 조인 작업 수행(C# 프로그래밍 가이드)

조건자 함수 종류를 기반으로 조인 작업을 수행하는 방법을 보여 줍니다.

방법: 복합 키를 사용하여 조인(C# 프로그래밍 가이드)

둘 이상의 일치하는 키를 기반으로 두 개의 소스를 조인하는 방법을 보여 줍니다.

방법: Join 절 결과의 순서 정렬(C# 프로그래밍 가이드)

조인 작업으로 생성된 시퀀스를 정렬하는 방법을 보여 줍니다.

방법: 내부 조인 수행(C# 프로그래밍 가이드)

LINQ에서 내부 조인을 수행하는 방법을 보여 줍니다.

방법: 그룹화 조인 수행(C# 프로그래밍 가이드)

LINQ에서 그룹화된 조인을 생성하는 방법을 보여 줍니다.

방법: 왼쪽 외부 조인 수행(C# 프로그래밍 가이드)

LINQ에서 왼쪽 우선 외부 조인을 생성하는 방법을 보여 줍니다.

방법: 쿼리 식의 Null 값 처리(C# 프로그래밍 가이드)

LINQ 쿼리에서 null 값을 처리하는 방법을 보여 줍니다.

원본 위치 <http://msdn.microsoft.com/ko-kr/library/bb397676.aspx> 
출처 : http://kojaedoo.tistory.com/123