[C#링크강좌,Linq쿼리식,OrderBy,Group By,Where]링크쿼리식예제
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Linq;
class Customer
{
public string Name { get; set; }
public string City { get; set; }
}
public class Test
{
public static void Main()
{
Customer[] customers = {
new Customer() { Name="박길동", City="서울" },
new Customer() { Name="가길동", City="제주" },
new Customer() { Name="최길동", City="서울" },
new Customer() { Name="문길동", City="속초" },
new Customer() { Name="제길동", City="제주" },
new Customer() { Name="하길동", City="제주"},
new Customer() { Name="제길동", City="서울"},
new Customer() { Name="허길동", City="제주"}
};
//City가 서울 이거나 속초인 데이터 이름내림차순 추출
IEnumerable<Customer> query1 = from cust in customers
where cust.City == "서울" || cust.City == "속초"
orderby cust.Name descending
select cust;
foreach (Customer c in query1)
{
Console.WriteLine(c.Name + "," + c.City);
}
Console.WriteLine("------------------");
//City가 서울이고 Name이 박길동인 데이터 추출
IEnumerable<Customer> query2 = from cust in customers
where cust.City == "서울" && cust.Name == "박길동"
select cust;
foreach (Customer c1 in query2)
{
Console.WriteLine(c1.Name + "," + c1.City);
}
Console.WriteLine("------------------");
// City로 그룹핑, City 내림차순 출력
IEnumerable<IGrouping<string, Customer>> query3 = from cust in customers
orderby cust.City descending
group cust by cust.City;
foreach (var cGroup in query3)
{
Console.WriteLine(cGroup.Key);
foreach (Customer c in cGroup)
{
Console.WriteLine(" {0}", c.Name);
}
}
Console.WriteLine("------------------");
//City로 그룹핑, 그룹키(City)로 정렬, 그룹의 개수가 2보다 큰그룹 출력
var custQuery = from cust in customers
group cust by cust.City into custGroup
where custGroup.Count() > 2
orderby custGroup.Key
select custGroup;
foreach (var cGroup in custQuery)
{
Console.WriteLine(cGroup.Key);
foreach (Customer c in cGroup)
{
Console.WriteLine(" {0}", c.Name);
}
}
}
}
[결과]
최길동,서울
제길동,서울
박길동,서울
문길동,속초
------------
박길동,서울
------------
제주
가길동
제길동
하길동
허길동
속초
문길동
서울
박길동
최길동
제길동
------------
서울
박길동
최길동
제길동
제주
가길동
제길동
하길동
허길동
댓글 없음:
댓글 쓰기