2022년 2월 5일 토요일

C# 링크, LINQ, 쿼리구문, 메서드구문 실습, 쿼리변수, Count, Max, Average 및 First, ToList, 닷넷학원, 자바학원, WPF학원, C#학원

 C# 링크, LINQ, 쿼리구문, 메서드구문 실습, 쿼리변수, Count, Max, Average 및 First, ToList, 닷넷학원, 자바학원, WPF학원, C#학원



https://www.youtube.com/watch?v=GqDWbAOjO4A&list=PLxU-iZCqT52DJyR6gqJy0MCL8RiTVXdos&index=22 


https://www.youtube.com/watch?v=AKZD0AtADT8&list=PLxU-iZCqT52DJyR6gqJy0MCL8RiTVXdos&index=23 



http://ojc.asia/bbs/board.php?bo_table=LecCsharp&wr_id=414 


C# 링크, LINQ, 쿼리구문, 메서드구문 실습, 쿼리변수, Count, Max, Average 및 First, ToList

C# 링크, LINQ, 쿼리구문, 메서드구문 실습, 쿼리변수, Count, Max, Average 및 First, ToListLINQ쿼리식, 메서드 형태 실습❶ LINQ(Language Integrated Query)에서 대부분의 쿼리는 선언적 쿼리 구문(from ~ select)을 사

ojc.asia



 

LINQ

쿼리식, 메서드 형태 실습





❶ LINQ(Language Integrated Query)에서 대부분의 쿼리는 선언적 쿼리 구문(from ~ select)을 사용하여 작성한다. 


➋ 이러한  쿼리 구문은 코드를 컴파일할 때 .NET CLR에 대한 메서드 호출로 변환해야 하는데, 이러한 메서드 호출은 Where, Select, GroupBy, Join, Max, Average 등과 같은 표준 쿼리 연산자를 이용하여 호출하도록 변경한다. 



❸ 또한 C# 개발자는 쿼리 구문 대신 메서드 구문을 사용하여 표준 쿼리 연산자를 직접 호출할 수 있다.


❹ 쿼리 구문과 메서드 구문은 의미상 동일하지만, 쿼리 구문이 더 간단하고 읽기 쉽다. 


C# LINQ 종류


[쿼리 구문] 
var empList = from emp in emps
                    where emp.Sal > 1000
                    select emp;

 foreach (var emp in empList) 
   Console.WriteLine(emp);

➊쿼리 변수 자체는 쿼리 명령을 저장할 뿐이다. 실제 쿼리 실행은 foreach 문에서 쿼리 변수가 반복될 때 실행된다.

❷데이터 소스에 대해 집계 함수를 수행하는 쿼리는 먼저 해당 요소를 반복해야 한다. 이러한 쿼리의 예로 Count, Max, Average 및 First가 있다. 이러한 쿼리는 쿼리 자체에서 결과를 반환하려면 foreach를 사용해야 하기 때문에 명시적 foreach 문 없이 즉시 실행된다.

❸또한 모든 쿼리를 즉시 실행하고 그 결과를 캐시하기 위해 ToList 또는 ToArray 메서드를 호출할 수 있다.

List<int> numList =  (from num in numbers
     where (num % 2) == 0
     select num).ToList();

[메서드 구문]
var empList3 = emps.Where(emp=> emp.Sal > 1000).ToList<Emp>();


C# LINQ(쿼리식 기반)

namespace LinqTest

{

    class Emp

    {

        public int Empno { get; set; }

        public string Ename { get; set; }

        public int Sal { get; set; }

    }


    class Test

    {

        static void Main(string[] args)

        {

            int[] scores = { 70, 99, 59, 88, 81, 97 };


            //최고점수

            int maxScore = (

                                   from score in scores

                                   select score

                                 ).Max();

            Console.WriteLine("최고점수 : {0}", maxScore);


            //아래처럼 쿼리식을 분리해도 된다.

            //LINQ질의 결과는 IEnumerable<T> 형태로 반환되는데 형식매개변수

            //T는 쿼리식의 select문에 의해 결정된다.

            //아래  쿼리식의 결과 select n은 int형 이므로 IEnumerable<int>가 리턴된다.

            IEnumerable<int> scoreQuery = from score in scores

                                                         select score;

            int lowScore = scoreQuery.Min();

            Console.WriteLine("최소점수 : {0}", lowScore);


            Emp[] emps = {

                                 new Emp() { Empno = 1, Ename="1길홍", Sal=900},

                                new Emp() { Empno = 2, Ename="2길동", Sal=1500},

                                new Emp() { Empno = 3, Ename="3길홍", Sal=800}

                                 };


            var empList = from emp in emps

                                where emp.Ename.Contains("홍")

                                orderby emp.Sal

                               select new

                               {

                                   Sabun = emp.Empno,

                                   Name = emp.Ename,

                                   Salary = emp.Sal * 12

                               };


            foreach (var o in empList) Console.WriteLine("{0}, {1}, {2}", o.Sabun, o.Name, o.Salary);

        }

    }

}




C# LINQ(메소드기반)


namespace MethodExam

{

    class Test

    {

        static void Main(string[] args)

        {

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


            //짝수를 내림차순 정렬하여 출력

            IEnumerable<int> q1 = numbers.Where(num => num % 2 == 0).OrderByDescending(n => n);

            foreach (int i in q1) Console.Write(i + " ");


            Console.WriteLine();


            //짝수의 합 

            int sum = numbers.Where(num => num % 2 == 0).Sum();

            Console.WriteLine("짝수 합 = " + sum);


            //짝수중 최대값 

            int max = numbers.Where(num => num % 2 == 0).Max();

            Console.WriteLine("짝수중 Max = " + max);


            //짝수의 평균값 

            double avg = numbers.Where(num => num % 2 == 0).Average();

            Console.WriteLine("Avg = " + avg);


            //Aggregate는 주어진 연산의 결과를 포워드 하면서 진행된다.

            // 1*2 한 후 결과를 3과 곱하고, 다시 결과를 4와 곱함... 

            var result = numbers.Aggregate((a, b) => a * b);

            Console.WriteLine("Aggregation = " + result);


            // 10은 SEED, 10+1 결과를 2와 더하고 다시 결과를 3과 더함... 

            result = numbers.Aggregate(10, (a, b) => a + b);

            Console.WriteLine("Aggregation with seed =" + result);


            // 짝수를 대상으로 2 * 4 한 후 결과를 6과 곱하고... 

            result = numbers.Where(num => num % 2 == 0).Aggregate((a, b) => a * b);

            Console.WriteLine("Aggregation.Where = " + result);


            string[] emps = { "1홍길동", "5길홍", "4길동", "2길홍" };


            Console.WriteLine("\n----- 이름에 '홍'이 포함된것");

            var names = emps.Where(s => s.Contains("홍"));

            foreach (var name in names) Console.WriteLine(name);


            Console.WriteLine("\n----- 이름 길이가 3보다 큰것");

            names = emps.Where(s => s.Length > 3);

            foreach (var name in names) Console.WriteLine(name);


            Console.WriteLine("\n----- 이름 길이로 정렬");

            names = emps.OrderBy(s => s.Length);

            foreach (var name in names) Console.WriteLine(name);


            Console.WriteLine("\n----- 이름이 '1'로 시작");

            names = emps.Where(s => s.StartsWith("1"));

            foreach (var name in names) Console.WriteLine(name);


            Console.WriteLine("\nThe End -------------");

        }

    }

}




#링크, #링큐, #LINQ, #시샵LINQ, #닷넷LINQ, #시샵교육, #시샵동영상, #닷넷동영상, #닷넷교육, #닷넷학원, 링크, 링큐, LINQ, 시샵LINQ, 닷넷LINQ, 시샵교육, 시샵동영상, 닷넷동영상, 닷넷교육, 닷넷학원, 

댓글 없음:

댓글 쓰기

(C#교육동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원

  (C#교육동영상)C# ADO.NET 실습  ODP.NET/ODAC 설치  오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원 https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-i...