여러 개의 데이터 원본
링크를 통해 여러 개의 데이터 원본에 접근하기 위해선 그저 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점 이하의 반을 추려낼 수 있습니다.
출력
잘 나옵니다.