모름

여러 개의 데이터 원본

 

링크를 통해 여러 개의 데이터 원본에 접근하기 위해선 그저 from을 중첩해서 사용하면 됩니다. 

 

from c in arrClass
from s in c.Score

 

모양은 위와 같습니다. 그럼 본격적으로 예제 코드를 작성해봅니다.

 

 


 

 

 

예제

 

using System;
using System.Linq;

namespace LinqFromFrom
{
    class Class
    {
        public string Name { get; set; }
        public int[]  Score { get; set; }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Class[] arrClass =
            {
                new Class(){Name = "연두반", Score = new int[]{ 99, 80, 70, 24 } },
                new Class(){Name = "분홍반", Score = new int[]{60,45,87,72}},
                new Class(){Name = "파랑반", Score = new int[]{95,30,85,94}},
                new Class(){Name = "노랑반", Score = new int[]{90,80,0,17}}
            };

            var classes = from c in arrClass
                          from s in c.Score
                          where s < 60
                          orderby 60
                          select new { c.Name, Lowest = s };

            foreach (var c in classes)
            {
                Console.WriteLine($"낙제 : {c.Name} ({c.Lowest})");
            }
        }
    }
}

 

arrClass 에서 범위 변수 c를 가지고, c에있는 Score 배열에 접근했습니다. Score의 범위 변수 s를 가지고 조건식을 만들어 60점 이하의 반을 추려낼 수 있습니다.

 

 


 

 

 

출력

 

 

잘 나옵니다.