분류 전체보기
-
쿼리의 결과를 새로운 객체 컬렉션으로 저장하는 방법C# 예제 공부일기 2020. 7. 28. 20:30
LINQ 쿼리식의 결과에서 새로운 객체를 만들어 컬렉션으로 저장할 수 있다. 다음의 프로그램은 이름,학번, 성적이 포함된 Student 클래스를 사용하여 시험 점수와 평균, 그리고 각 시험에서 커트라인 이상의 점수를 받은 학생들을 출력합니다. class Student { public string Name { get; set; } public int Id { get; set; } public List Scores { get; set; } } class Program { static List students; //정적 리스트 선언 static void Main(string[] args) { students = new List //정적 리스트 생성, 초기화 { new Student{Name="Pjkim",Id..
-
LINQ의 결과를 리스트나 배열로 반환C# 예제 공부일기 2020. 7. 28. 20:10
LINQ의 결과는 IEnumerable 가 된다고 했다. 그렇다면 LINQ 의 결과로 리스트나 배열로 받고싶을 땐 어떻게 할까. ToList () 메소드를 사용하거나 ToArray() 메소드를 사용하면 된다, static void Main(string[] args) { List data = new List { 123, 456, 132, 96, 13, 465, 321}; Print("data : ", data); List listOdd = new List(); listOdd = SelectOddAndSort(data); Print("Ordered Odd : ", listOdd); int[] ListEven; ListEven = SelectEvenAndSort(data); Print("Ordered Even..
-
LINQ를 이용한 조건 검색과 정렬C# 예제 공부일기 2020. 7. 28. 19:47
LINQ 에서 컬렉션에서 원하는 값을 찾는 과정이 마치 데이터베이스에서 질의하는 것과 같다. 1) data 리스트에서 20보다 큰 짝수를 내림차순으로 정렬하여 저장 2) 이 값을 2씩 곱하여 오름차순으로 정렬 class Program { static void Main(string[] args) { List data = new List { 123, 45, 12, 89, 456, 1, 4, 74, 46 }; var even = from item in data where (item > 20 && item % 2 == 0) orderby item descending select item; Console.WriteLine("20보다 크고 짝수인 숫자 검색 :"); foreach (var item in even) ..
-
LINQ의 기초C# 예제 공부일기 2020. 7. 28. 19:38
LINQ는 Language-INtegrated Query의 약자로 C#에 통합된 데이터 질의 기능이다. SQL과 같은 Query 언어는 데이터베이스에서 사용되던 언어인데, 이를 C#에 도입한 것이다. LINQ를 사용하면 컬렉션에서 데이터를 다루는 방법이 훨씬 간단해진다. var sortedEven = from item in data where item % 2 ==0 orderby item select item; 위 문장을 보면 from, where, orderby, select 등의 LINQ연산자가 사용되었다. "data 컬렉션에 있는 데이터 item으로부터 짝수인 item을 item값을 기준으로 정렬해서 선택한다. " 는 의미를 가진다. LINQ를 사용하려면 원본 데이터가 IEnumerable이나 IE..
-
List<T> 에서 Predicate<T> 델리게이트 활용C# 예제 공부일기 2020. 7. 28. 19:15
Predicate 델리게이트는 리턴 값이 반드시 bool이고 입력 파라미터가 하나인 델리게이트입니다. Predicate 는 Array나 List클래스의 메소드들에서 자주 사용된다. 예를 들어 List 클래스에서 Predicate를 사용하는 메소드들은 다음과 같다. 리턴 타입 원형 설명 bool List.Exists(Predicate) 조건에 맞는 요소가 있는지 T List.Find(Predicate) 조건에 맞는 첫 번째 요소 리턴 List List.FindAll(Predicate) 조건에 맞는 모든 요소 리턴 T List.FindLast(Predicate) 조건에 맞는 마지막 요소 리턴 int List.RemoveAll(Predicate) 조건에 맞는 요소를 모두 제거 bool List.TrueForA..
-
Predicate<T> 델리게이트C# 예제 공부일기 2020. 7. 28. 18:53
Predicate 는 Func나 Action과 같은 미리 정의된 델리게이트 형식이다. Predicate 델리게이트 메소드는 하나의 매개변수를 갖고 리턴 값이 bool인 델리게이트이다. predicate isEven = IsEven; static bool IsEven(int n) { return n%2==0; } predicate isEven은 매개변수가 정수 하나이고 리턴 값이 bool인 IsEven메소드의 이름을 지정한다. 여기서 Predicate isEven은 소문자로 시작하고 메소드 IsEven은 대문자로 시작하는 것에 주의하자, 따라서 isEven Predicate를 사용해서 IsEven 메소드를 호출할 수 있다. Console.WriteLine(isEven(6)) //결과 : true 여기서 P..
-
람다식(Lambda Expression)C# 예제 공부일기 2020. 7. 22. 20:10
람다식은 익명 메소드를 간단하게 표현할 수 있는 방법이다. 람다식은 개체로 처리되는 코드 블록(식 또는 문 블록)이며 메소드와 같이 매개변수와 리턴 값을 갖는다. 람다식은 인수를 메소드에 전달할 수 있으며 값을 반환할 수 있다. 람다식은 델리게이트로 표현될 수 있는 코드이다. 람다식의 델리게이트형은 리턴 값이나 매개변수 개수에 따라 정해진다. 리턴 값이 없는 람다식은 Action 델리게이트에 해당하고 리턴 값이 있는 람다식은 Func델리게이트에 해당한다. 두개의 파라미터를 갖고 리턴 값이 없는 람다식 Action 델리게이트 한개의 파라미터를 갖고 리턴 값이 하나인 람다식 Func 델리게이트 람다식은 연산자 " => "로 표현된다. 매개변수 => 식, 또는 문장 (리턴 값) 예시) x => x * x : ..
-
Func와 Action으로 델리게이트를 더 간단히 만들기C# 예제 공부일기 2020. 7. 22. 19:44
이제는 델리게이트 선언 부분도 필요가 없다고 한다. //delegate bool MemberTest(int x); 앞에서 배열에서 짝수와 홀수의 개수를 출력하는 프로그램을 무명 델리게이트를 사용하여 작성했는데, 델리게이트를 사용하려면 우선 delegate를 선언해야 하는데 이것도 사실은 번거로운 일이다. .Net에서는 Func와 Action 델리게이트를 미리 만들어서 제공한다. 이 두개를 사용하면 delegate 를 선언할 필요가 없다. Func 델리게이트는 결과를 반환하는 메소드를 참조하기 위해서, Action 델리게이트는 반환 값이 없는 메소드를 참조한다. Func와 Action은 제네릭 매개변수를 사용한다. Func 은 매개변수가 int란 뜻이고 반환타입이 bool이란 뜻이다. 매개변수 리스트 중에..