LinqDataSource.GroupBy Propriedade
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Obtém ou define um valor que especifica quais as propriedades usadas para agrupar os dados recuperados.
public:
property System::String ^ GroupBy { System::String ^ get(); void set(System::String ^ value); };
public string GroupBy { get; set; }
member this.GroupBy : string with get, set
Public Property GroupBy As String
Valor de Propriedade
Uma cadeia que é usada para criar a cláusula Group By.
Exemplos
O exemplo seguinte mostra um LinqDataSource controlo que agrupa os dados devolvidos por uma propriedade chamada Category. Devolve os valores partilhados e calcula o preço médio dos registos agrupados.
<asp:LinqDataSource
ContextTypeName="ExampleDataContext"
TableName="Products"
GroupBy="Category"
Select="new(Key as ProductCategory,
Average(Price) as AvePrice)"
ID="LinqDataSource1"
runat="server">
</asp:LinqDataSource>
<asp:GridView
AllowPaging="true"
DataSourceID="LinqDataSource1"
ID="GridView1"
runat="server">
</asp:GridView>
<asp:LinqDataSource
ContextTypeName="ExampleDataContext"
TableName="Products"
GroupBy="Category"
Select="new(Key as ProductCategory,
Average(Price) as AvePrice)"
ID="LinqDataSource1"
runat="server">
</asp:LinqDataSource>
<asp:GridView
AllowPaging="true"
DataSourceID="LinqDataSource1"
ID="GridView1"
runat="server">
</asp:GridView>
O exemplo seguinte mostra um LinqDataSource controlo configurado para agrupar por duas colunas. A Key propriedade refere-se a um objeto que tem duas propriedades, ProductCategory e Color. O objeto representado por It é renomeado Productspara . O objeto renomeado Products contém uma coleção dos registos individuais num agrupamento, e cada instância contém todas as colunas da tabela Produtos.
<asp:LinqDataSource
ContextTypeName="ExampleDataContext"
TableName="Products"
GroupBy="new(ProductCategory, Color)"
Select="new(Key,
It As Products,
Max(ListPrice) As MaxListPrice,
Min(ListPrice) As MinListPrice)"
ID="LinqDataSource1"
runat="server">
</asp:LinqDataSource>
<asp:LinqDataSource
ContextTypeName="ExampleDataContext"
TableName="Products"
GroupBy="new(ProductCategory, Color)"
Select="new(Key,
It As Products,
Max(ListPrice) As MaxListPrice,
Min(ListPrice) As MinListPrice)"
ID="LinqDataSource1"
runat="server">
</asp:LinqDataSource>
O exemplo seguinte mostra dois ListView controlos para exibir os dados do LinqDataSource controlo no exemplo anterior. Um ListView controlo mostra os dados agrupados e o outro ListView controlo mostra os nomes individuais dos produtos que pertencem a esse grupo. A propriedade do DataSource controlo limitado a dados aninhado é definida como Products, que é o alias do It objeto.
<asp:ListView
DataSourceID="LinqDataSource1"
ID="ListView1" runat="server">
<LayoutTemplate>
<table id="Table1"
style="background-color:Teal;color:White"
runat="server"
class="Layout">
<thead>
<tr>
<th><b>Product Category</b></th>
<th><b>Color</b></th>
<th><b>Highest Price</b></th>
<th><b>Lowest Price</b></th>
</tr>
</thead>
<tr runat="server" id="itemPlaceholder">
</tr>
</table>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td><%# Eval("key.ProductCategory") %></td>
<td><%# Eval("key.Color") %></td>
<td><%# Eval("MaxListPrice") %></td>
<td><%# Eval("MinListPrice") %></td>
</tr>
<tr>
<td colspan="4" style="width:100%;background-color:White;color:Black">
<asp:ListView
DataSource='<%# Eval("Products") %>'
runat="server"
ID="ListView2">
<LayoutTemplate>
<div runat="server" id="itemPlaceholder" />
</LayoutTemplate>
<ItemTemplate>
<%# Eval("ProductName") %><br />
</ItemTemplate>
</asp:ListView>
</td>
</tr>
</ItemTemplate>
</asp:ListView>
<asp:ListView
DataSourceID="LinqDataSource1"
ID="ListView1" runat="server">
<LayoutTemplate>
<table id="Table1"
style="background-color:Teal;color:White"
runat="server"
class="Layout">
<thead>
<tr>
<th><b>Product Category</b></th>
<th><b>Color</b></th>
<th><b>Highest Price</b></th>
<th><b>Lowest Price</b></th>
</tr>
</thead>
<tr runat="server" id="itemPlaceholder">
</tr>
</table>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td><%# Eval("key.ProductCategory") %></td>
<td><%# Eval("key.Color") %></td>
<td><%# Eval("MaxListPrice") %></td>
<td><%# Eval("MinListPrice") %></td>
</tr>
<tr>
<td colspan="4" style="width:100%;background-color:White;color:Black">
<asp:ListView
DataSource='<%# Eval("Products") %>'
runat="server"
ID="ListView2">
<LayoutTemplate>
<div runat="server" id="itemPlaceholder" />
</LayoutTemplate>
<ItemTemplate>
<%# Eval("ProductName") %><br />
</ItemTemplate>
</asp:ListView>
</td>
</tr>
</ItemTemplate>
</asp:ListView>
Observações
Usas a GroupBy propriedade para especificar quais as propriedades que são usadas para consolidar registos de dados com os mesmos valores. Por exemplo, se definir a GroupBy propriedade para Name, todos os registos na consulta que têm o mesmo Name valor de propriedade são devolvidos como um único registo consolidado.
Pode atribuir mais do que uma propriedade GroupBy à propriedade encerrando todas as propriedades da new função e separando cada propriedade usando uma vírgula. Por exemplo, para agrupar pelas propriedades e então Category, defina a GroupBy propriedade para new(Name, Category).Name
Os valores na propriedade usados para agrupamento são devolvidos através de uma propriedade gerada chamada Key. Inclui a Key propriedade na Select propriedade para recuperar os valores agrupados. Pode definir a Key propriedade para um alias usando a As palavra-chave, mas não é obrigado a usar um alias. Por exemplo, pode definir a GroupBy propriedade para uma propriedade chamada Category. Pode obter os valores consolidados da Category propriedade definindo Select a propriedade para new(Key As ProductCategory).
Pode aceder aos registos individuais de um agrupamento incluindo a It propriedade dentro da Select propriedade. A It propriedade contém uma coleção de registos que partilham valor na propriedade agrupada. Pode iterar sobre a It propriedade para recuperar os registos individuais.
A GroupBy propriedade é frequentemente usada com métodos de agregação. Pode usar os seguintes métodos agregados:
Count()Average(Coluna)Sum(Coluna)Max(Coluna)Min(Coluna)Where(condição)Any()All(condição)
Para mais informações, consulte a Visão Geral do Controlo do Servidor Web do LinqDataSource e Como: Agrupar e Agregar Dados Usando o Controlo LinqDataSource.