LinqDataSource.GroupBy Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Obtém ou define um valor que especifica quais propriedades são 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 da propriedade
Uma cadeia de caracteres usada para criar a cláusula Group By.
Exemplos
O exemplo a seguir mostra um controle LinqDataSource que agrupa os dados retornados por uma propriedade chamada Category. Ele retorna os valores compartilhados e calcula o preço médio dos registros 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 a seguir mostra um controle LinqDataSource configurado para agrupar por duas colunas. A propriedade Key faz referência a um objeto que tem duas propriedades, ProductCategory e Color. O objeto representado por It é renomeado Products. O objeto Products renomeado contém uma coleção de registros individuais em um 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 a seguir mostra dois controles ListView para exibir os dados do controle LinqDataSource no exemplo anterior. Um controle ListView exibe os dados agrupados e o outro controle ListView exibe os nomes individuais de produtos que pertencem a esse grupo. A propriedade DataSource do controle associado a dados aninhado é definida como Products, que é o alias do objeto It.
<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>
Comentários
Você usa a propriedade GroupBy para especificar quais propriedades são usadas para consolidar registros de dados que têm os mesmos valores. Por exemplo, se você definir a propriedade GroupBy como Name, todos os registros na consulta que têm o mesmo valor de propriedade Name serão retornados como um único registro consolidado.
Você pode atribuir mais de uma propriedade à propriedade GroupBy colocando todas as propriedades na função new e separando cada propriedade usando uma vírgula. Por exemplo, para agrupar pelas propriedades Name e, em seguida, Category, defina a propriedade GroupBy como new(Name, Category).
Os valores na propriedade usada para agrupamento são retornados por meio de uma propriedade gerada chamada Key. Você inclui a propriedade Key na propriedade Select para recuperar os valores agrupados. Você pode definir a propriedade Key para um alias usando a palavra-chave As, mas não é necessário usar um alias. Por exemplo, você pode definir a propriedade GroupBy como uma propriedade chamada Category. Você pode recuperar os valores consolidados da propriedade Category definindo a propriedade Select como new(Key As ProductCategory).
Você pode acessar os registros individuais em um agrupamento incluindo a propriedade It na propriedade Select. A propriedade It contém uma coleção de registros que compartilham um valor na propriedade agrupada. Você pode iterar pela propriedade It para recuperar os registros individuais.
A propriedade GroupBy geralmente é usada com métodos de agregação. Você pode usar os seguintes métodos de agregação:
Count()Average()de colunaSum()de colunaMax()de colunaMin()de colunaWhere(condição)Any()All(condição)
Para obter mais informações, consulte Visão geral do controle do servidor Web LinqDataSource e Como agrupar e agregar dados usando o controle LinqDataSource.