SelectMany के दस्तावेज़ीकरण से मुझे जो समझ में आया है, एक 1-कई संबंधों के एक (चपटे) अनुक्रम का उत्पादन करने के लिए इसका उपयोग कर सकता है।
मेरी निम्नलिखित कक्षाएं हैं
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 में अनुवाद नहीं करती है, तो क्या कोई मुझे Linq क्वेरी प्रदान कर सकता है जो SelectMany का उपयोग करता है?