본문 바로가기
C# 공부

LINQ

by Dev_Hugh 2021. 8. 26.
728x90
반응형

Study about LINQ

LINQ의 기본

  • from : 어떤 데이터 집합에서 찾을 것인가?
  • where : 어떤 값의 데이터를 찾을 것인가?
  • select : 어떤 항목을 추출할 것인가?

group by로 데이터 분류

static void Main(string[] args)
{
    class Profile
    {
        public string Name { get; set; }
        public int Height { get; set; }
    }
    static void Main(string[] args)
    {
        Profile[] arrProfile =
        {
            new Profile(){Name = "Hugh", Height = 171},
            new Profile(){Name = "John", Height = 182},
            new Profile(){Name = "Wendy", Height = 162}
            new Profile(){Name = "Joy", Height = 176},
        };
        var profiles = from profile in arrProfile
                    where profile.Height < 175
                    orderby profile.Height
                    select new
                    {
                        Name = profile.Name,
                        InchHeight = profile.Height * 0.393
                    };
        foreach (var profile in profiles)
        {
            Console.WirteLine($"{profile.Name}, {profile.InchHeight}");
        }
        // group by 이용
        var listProfile = from profile in arrProfile
                        orderby profile.Height
                        group profile by profile.Hegiht < 175 into g
                        select new {GroupKey = g.key, Profiles = g};
        foreach(var Group in listProfile)
        {
            Console.WriteLine($"175cm 미만 : {Group.GroupKey}");
            foreach(var profile in Group.Profiles)
            {
                Console.WirteLine($"{profile.Name}, {profile.Height}");
            }
        }
    }
}
  • 모든 LINQ는 반드시 from절로 시작
  • from <범위 변수> in <데이터 원본>
  • 쿼리식의 대상이 될 데이터 원본은 IEnumerable 인터페이스를 상속하는 형식이다.
  • where은 Filter 역할로 from 절의 범위 변수가 가져야 하는 조건을 입력
  • orderby는 데이터 정렬을 수행하는 연산자로 정렬 기준을 매개변수로 입력
  • select는 최종 결과를 추출하는 쿼리식의 마침표 같은 존재
  • LINQ 결과는 IEnumerable로 반환, 형식 매개변수 T는 select에 의해 결정
  • group by 는 조건에 맞게 그룹으로 나눠 묶는데 예제에선 175cm 미만으로 묶음
728x90
반응형

'C# 공부' 카테고리의 다른 글

serializable  (0) 2021.08.26
reflection  (0) 2021.08.26
lambda  (0) 2021.08.26
dynamic  (0) 2021.08.26
property  (0) 2021.08.25