검색결과 리스트
LINQ에 해당되는 글 1건
- 2010.12.22 [C#] Linq 기본 정리
글
Linq 부분을 보면서 코드로 기본 적인 부분에 대해서 정리를 해 봤다.
class info
{
public int num;
public string name;
public info(int num, string name)
{
this.num = num;
this.name = name;
}
}
class info1
{
public int num;
public string name;
public info1(int num, string name)
{
this.num = num;
this.name = name;
}
}
class Program
{
static bool method(int num)
{
return 200 < num * 100;
}
static void Main(string[] args)
{
//기본 표현식
//from 변수명 in 컬렉션 (where | orderby | let) select {select | group}
//string[] msg = { "Hello", "Hi", "World", "Korea" };
//IEnumerable<string> query = from str in msg select str;
//foreach (string temp in query)
//{
// Console.WriteLine(temp);
//}
//string path = @"C:\";
//var Files = from file in Directory.GetDirectories(path) select file;
//foreach (var temp in Files)
//{
// Console.WriteLine(temp);
//}
//info[] data = { new info(1, "1"), new info(2, "2"), new info(3, "3") };
//IEnumerable<info> result = from temp in data select temp;
//foreach (info temp in result)
//{
// Console.WriteLine(temp.num + " : " + temp.name);
//}
//where 이용
//List<int> data = new List<int> { 1, 2, 3, 4, 5, 6 };
//IEnumerable<int> result = from int temp in data where (temp > 2) select temp;
//foreach (int temp in result)
//{
// Console.WriteLine(temp);
//}
//select 에서 데이터 가공
//List<int> data = new List<int> { 1, 2, 3, 4, 5, 6 };
//IEnumerable<int> result = from int temp in data where (temp > 1) select (temp + 3);
//foreach (int temp in result)
//{
// Console.WriteLine(temp);
//}
//두개 이상 select, 클래스를 그때 그때 생성 할 수도 있지만 부담스러움에 다음과 같이 처리
//info[] data = { new info(1, "1"), new info(2, "2"), new info(3, "3") };
//var result = from temp in data select new { num = temp.num, name = temp.name };
//foreach (var temp in result)
//{
// Console.WriteLine(temp.num + " : " + temp.name);
//}
//메서드 이용
//List<int> data = new List<int> { 200, 300, 400 };
//IEnumerable<int> result = data.Where(method);
//foreach (int temp in result)
//{
// Console.WriteLine(temp);
//}
//람다식 이용
//List<int> data = new List<int> { 1000, 2000, 3000, 4000, 5000, 6000 };
////인자값 => (비교 판단)
//var result = data.Where(x => (x * 12 >= 20000));
//foreach (int temp in result)
//{
// Console.WriteLine(temp);
//}
//data 합계
//List<int> data = new List<int> { 1, 2, 3, 4, 5, 6 };
//var result = (from int temp in data where temp > 2 select temp).Sum();
//Console.WriteLine(result);
//data 합집합
//List<int> data1 = new List<int> { 1, 2, 3, 4, 6, 7 };
//List<int> data2 = new List<int> { 5, 8 };
//var result = (from temp in data1 select temp).Union(from temp in data2 select temp);
//foreach (var temp in result)
//{
// Console.WriteLine(temp);
//}
//정렬
//info[] data = { new info(1, "31"), new info(2, "21"), new info(3, "13") };
//IEnumerable<info> result = from temp in data orderby temp.name select temp;
//IEnumerable<info> result = from temp in data orderby temp.name descending select temp;
//foreach (info temp in result)
//{
// Console.WriteLine(temp.num + " : " + temp.name);
//}
//let 특정 데이터에 별칭 붙여서 이용
//info[] data = { new info(1, "31"), new info(2, "21"), new info(3, "13") };
//IEnumerable<info> result = from temp in data let num1 = temp.num where num1 > 1 select temp;
//foreach (info temp in result)
//{
// Console.WriteLine(temp.num + " : " + temp.name);
//}
//group by
//info[] data = { new info(1, "31"), new info(2, "13"), new info(3, "13"), new info(3, "14") };
//IEnumerable<IGrouping<string, info>> result = from temp in data group temp by temp.name;
//foreach (IGrouping<string, info> temp in result)
//{
// Console.WriteLine(temp.Key);
// foreach (info tem in temp)
// {
// Console.WriteLine(tem.num + " : " + tem.name);
// }
//}
//into let과 비슷하지만 그룹화, 조인 쿼리에 대해 별칭 부여, 그룹화 결과에 대한 정렬 또는 필터링시 이용
//info[] data = { new info(1, "31"), new info(2, "13"), new info(3, "13"), new info(3, "14") };
//var result = from temp in data group temp by temp.name into it where it.Key == "13" select it;
//foreach (var tem in result)
//{
// Console.WriteLine(tem.Key);
// foreach(info tem1 in tem)
// {
// Console.WriteLine(tem1.num);
// }
//}
//Sub Query
//info[] data = { new info(1, "31"), new info(2, "13"), new info(3, "13"), new info(3, "14") };
//var result = from temp in data where temp.num == ((from temp1 in data select temp1.num).Max()) select temp.name;
//foreach (var temp in result)
//{
// Console.WriteLine(temp);
//}
//Join
info[] data = { new info(1, "31"), new info(2, "13"), new info(0, "13"), new info(3, "14") };
info[] data1 = { new info(4, "31"), new info(2, "13"), new info(9, "13"), new info(3, "14") };
var result = from temp in data join temp1 in data1 on temp.num equals temp1.num select new {temp.num,temp1.name};
foreach(var temp in result)
{
Console.WriteLine(temp.num + " : " +temp.name);
}
Console.ReadLine();
}
}
매번 루프를 돌려서 처릴 했는데.. Linq를 왜 소홀히 했을까 싶은 생각이 드는 공부..
좀 더 깊게 봐야지 ㅠ_ㅠ
RECENT COMMENT