내가 SelectMany의 문서에서 이해 한 바에 따르면,이를 사용하여 일대 다 관계의 (평탄화 된) 시퀀스를 생성 할 수 있습니다.
다음 수업이 있습니다
public class Customer
{
public int Id { get; set; }
public string Name { get; set; }
}
class Order
{
public int Id { get; set; }
public int CustomerId { get; set; }
public string Description { get; set; }
}
그런 다음 쿼리 식 구문을 사용하여 사용하려고합니다.
var customers = new Customer[]
{
new Customer() { Id=1, Name ="A"},
new Customer() { Id=2, Name ="B"},
new Customer() { Id=3, Name ="C"}
};
var orders = new Order[]
{
new Order { Id=1, CustomerId=1, Description="Order 1"},
new Order { Id=2, CustomerId=1, Description="Order 2"},
new Order { Id=3, CustomerId=1, Description="Order 3"},
new Order { Id=4, CustomerId=1, Description="Order 4"},
new Order { Id=5, CustomerId=2, Description="Order 5"},
new Order { Id=6, CustomerId=2, Description="Order 6"},
new Order { Id=7, CustomerId=3, Description="Order 7"},
new Order { Id=8, CustomerId=3, Description="Order 8"},
new Order { Id=9, CustomerId=3, Description="Order 9"}
};
var customerOrders = from c in customers
from o in orders
where o.CustomerId == c.Id
select new
{
CustomerId = c.Id
, OrderDescription = o.Description
};
foreach (var item in customerOrders)
Console.WriteLine(item.CustomerId + ": " + item.OrderDescription);
이것은 내가 필요한 것을 제공합니다.
1: Order 1
1: Order 2
1: Order 3
1: Order 4
2: Order 5
2: Order 6
3: Order 7
3: Order 8
3: Order 9
쿼리 식 구문을 사용하지 않을 때 SelectMany 메서드를 사용하는 것으로 해석한다고 가정합니다.
어느 쪽이든 SelectMany를 사용하여 머리를 감싸려고합니다. 따라서 위의 쿼리가 두 개의 클래스와 모의 데이터가 주어지면 SelectMany로 변환되지 않더라도 누군가 SelectMany를 사용하는 linq 쿼리를 제공 할 수 있습니까?