Если вы используете Entity Framework или LINQ to Sql и у вас есть связь (отношение) между сущностями, то вы можете сделать это:

го, что я понимаю из документации 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?

Ответы на вопрос(4)

Ваш ответ на вопрос