SelectMany belgelerinden anladığım kadarıyla, 1-çok ilişkisinin (düzleştirilmiş) bir dizisini üretmek için onu kullanabiliriz.
Aşağıdaki derslerim var
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; }
}
Daha sonra bunları sorgu ifadesi sözdizimini kullanarak kullanmaya çalışıyorum.
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);
Bu ihtiyacım olanı veriyor.
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
Sorgu ifade sözdizimini kullanmadığınızda bunun SelectMany yöntemini kullanmaya dönüştüğünü varsayıyorum.
Her iki durumda da, SelectMany kullanarak başımı sarmaya çalışıyorum. Öyleyse, yukarıdaki sorgum, iki sınıf ve sahte veriler göz önüne alındığında SelectMany'ye çevrilmese bile, birisi bana SelectMany kullanan bir linq sorgusu sağlayabilir mi?