본문 바로가기

C#

시퀀스

반응형
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.CSharpPhrase.Extension;

namespace 시퀀스
{
    
    
    class Program
    {
        
       
        static void Main(string[] args)
        {
            string[] names = new string[] { "Seoul", "New Delhi", "Bangkok", "London", "Paris", "Berlin", "Canberra", "Hong Kong" };
            var query = names.Where(s => s.Length <= 5);
            foreach (var item in query)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("==============");
            //지연실행
            names[0] = "Busan";
            //실제로 데이터가 필요할 때 쿼리가 실행되는 것입니다.
            foreach (var item in query)
            {
                Console.WriteLine(item);
            }
            //쿼리를 명시적으로 실행하고 싶을 때 사용하는 메서드->ToArray / ToList

            Console.WriteLine("==============");
            var query2 = names.Where(s => s.Length <= 5).ToArray(); //즉시실행
            foreach (var item in query2)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("==============");
            
            names[0] = "Busan";
            foreach (var item in query2)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("==============");
            
            var count = names.Count(s => s.Length > 5);
            Console.WriteLine(count);

            var query3 = from s in names where s.Length >= 5 select s.ToUpper();
            // 쿼리구문을 쓰는것 보다는 그냥 LINQ를 쓰는게 났겠다 .
            var query4 = names.Where(s => s.Length >= 5).Select(s => s.ToUpper());
            // 쿼리구문은 LINQㅡ의 모든 기능을  이용할 수 없다 .
            // 점(.)으로 연결하는 메서드 구문이 생각을 방해 받지 않고 연속해석 코드를 작성할 수 있다.
            // 점으로 연결하는 베서드 구문은 비주얼 스튜디오가 가진 강력한 인텔리센스 기능을 충분히 활용할 수 있다.




           }
    }
}
반응형