join 절 결과를 순서대로 정렬

이 예제에서는 조인 작업 결과를 순서대로 정렬하는 방법을 보여 줍니다. 조인 후 순서대로 정렬합니다. 조인 전에 하나 이상의 소스 시퀀스와 함께 orderby 절을 사용할 수도 있지만 일반적으로 권장되지는 않습니다. 일부 LINQ 공급자는 조인 후에 정렬 순서를 유지하지 않을 수도 있습니다.

참고

이 항목의 예제에서는 다음 데이터 클래스를 사용합니다.

record Product(string Name, int CategoryID);
record Category(string Name, int ID);

예제

이 쿼리는 그룹 조인을 만든 후 범위 내에 있는 범주 요소에 따라 그룹을 정렬합니다. 무명 형식 이니셜라이저 내의 하위 쿼리는 제품 시퀀스에서 일치하는 모든 요소를 순서대로 정렬합니다.

List<Category> categories =
[
    new(Name: "Beverages", ID: 001),
    new("Condiments", 002),
    new("Vegetables", 003),
    new("Grains", 004),
    new("Fruit", 005)
];

List<Product> products =
[
    new(Name: "Cola", CategoryID: 001),
    new("Tea", 001),
    new("Mustard", 002),
    new("Pickles", 002),
    new("Carrots", 003),
    new("Bok Choy", 003),
    new("Peaches", 005),
    new("Melons", 005),
];

var groupJoinQuery2 =
    from category in categories
    join prod in products on category.ID equals prod.CategoryID into prodGroup
    orderby category.Name
    select new
    {
        Category = category.Name,
        Products =
            from prod2 in prodGroup
            orderby prod2.Name
            select prod2
    };

foreach (var productGroup in groupJoinQuery2)
{
    Console.WriteLine(productGroup.Category);
    foreach (var prodItem in productGroup.Products)
    {
        Console.WriteLine($"  {prodItem.Name,-10} {prodItem.CategoryID}");
    }
}

/* Output:
    Beverages
      Cola       1
      Tea        1
    Condiments
      Mustard    2
      Pickles    2
    Fruit
      Melons     5
      Peaches    5
    Grains
    Vegetables
      Bok Choy   3
      Carrots    3
 */

참고 항목