셀렉트
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>
ScottGu’s Bolog
1) Query Products From the Database
2) Update a Product in the Database
3) Insert a New Category and Two New Products into the Database
4) Delete Products from the Database
5) Call a Stored Procedure
The code below demonstrates how to retrieve Product entities not using LINQ query syntax, but rather by calling the "GetProductsByCategory" stored procedure we added to our data model above. Note that once I retrieve the Product results, I can update/delete them and then call db.SubmitChanges() to persist the modifications back to the database.
6) Retrieve Products with Server Side Paging
The code below demonstrates how to implement efficient server-side database paging as part of a LINQ query. By using the Skip() and Take() operators below, we'll only return 10 rows from the database - starting with row 200.
C#: