Como: Ordenar os resultados de uma cláusula unir (guia de programação translation from VPE for Csharp)
Este exemplo mostra a ordem dos resultados de uma operação de unir.Observe que a ordenação é executada após a unir.Embora você possa usar um orderby cláusula com um ou mais das seqüências de fonte antes da unir, geralmente não é recomendável-lo. Alguns LINQ provedores não podem preservar esse pedido após a unir.
Exemplo
Esta consulta cria uma unir de agrupar e, em seguida, classifica os grupos com base no elemento de categoria, que ainda está no escopo.Dentro o inicializador de tipo anônimo, uma subconsulta ordens todos os elementos correspondentes da sequência de produtos.
class HowToOrderJoins
{
#region Data
class Product
{
public string Name { get; set; }
public int CategoryID { get; set; }
}
class Category
{
public string Name { get; set; }
public int ID { get; set; }
}
// Specify the first data source.
List<Category> categories = new List<Category>()
{
new Category(){Name="Beverages", ID=001},
new Category(){ Name="Condiments", ID=002},
new Category(){ Name="Vegetables", ID=003},
new Category() { Name="Grains", ID=004},
new Category() { Name="Fruit", ID=005}
};
// Specify the second data source.
List<Product> products = new List<Product>()
{
new Product{Name="Cola", CategoryID=001},
new Product{Name="Tea", CategoryID=001},
new Product{Name="Mustard", CategoryID=002},
new Product{Name="Pickles", CategoryID=002},
new Product{Name="Carrots", CategoryID=003},
new Product{Name="Bok Choy", CategoryID=003},
new Product{Name="Peaches", CategoryID=005},
new Product{Name="Melons", CategoryID=005},
};
#endregion
static void Main()
{
HowToOrderJoins app = new HowToOrderJoins();
app.OrderJoin1();
// Keep console window open in debug mode.
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
void OrderJoin1()
{
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(" {0,-10} {1}", prodItem.Name, 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
*/
}
Compilando o código
Criar um Visual Studio projeto que se destina a .NET estrutura versão 3.5. Por padrão, o projeto tem uma referência a sistema.Core.dll e um using diretiva para o namespace sistema.LINQ.
Copie o código em seu projeto.
Pressione F5 para compilar e executar o programa.
Pressione qualquer tecla para sair da janela do console.
Consulte também
Conceitos
Expressões de consulta do LINQ (guia de programação translation from VPE for Csharp)
Referência
cláusula OrderBy (translation from VPE for Csharp Reference)
cláusula de unir (translation from VPE for Csharp Reference)