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 LinqDataSource controle 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 LinqDataSource controle configurado para agrupar por duas colunas. A Key
propriedade faz referência a um objeto que tem duas propriedades ProductCategory
e Color
. O objeto representado por It
é renomeado Products
. O objeto renomeado Products
contém uma coleção dos 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 ListView controles para exibir os dados do LinqDataSource controle no exemplo anterior. Um ListView controle exibe os dados agrupados e o outro ListView controle exibe os nomes individuais dos produtos que pertencem a esse grupo. A propriedade do DataSource controle aninhado associado a dados é 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>
Comentários
Você usa a GroupBy propriedade para especificar quais propriedades são usadas para consolidar registros de dados que têm os mesmos valores. Por exemplo, se você definir a GroupBy propriedade como Name
, todos os registros na consulta que têm o mesmo Name
valor de propriedade serão retornados como um único registro consolidado.
Você pode atribuir mais de uma propriedade à GroupBy propriedade colocando todas as propriedades na new
função e separando cada propriedade usando uma vírgula. Por exemplo, para agrupar pelas propriedades Name
e, em seguida Category
, definir a GroupBy propriedade como new(Name, Category)
.
Os valores na propriedade que são usados para agrupamento são retornados por meio de uma propriedade gerada chamada Key
. Você inclui a Key
propriedade na Select propriedade para recuperar os valores agrupados. Você pode definir a Key
propriedade como um alias usando a As
palavra-chave, mas não é necessário usar um alias. Por exemplo, você pode definir a GroupBy propriedade como uma propriedade chamada Category
. Você pode recuperar os valores consolidados da Category
propriedade definindo a Select propriedade como new(Key As ProductCategory)
.
Você pode acessar os registros individuais em um agrupamento incluindo a It
propriedade na Select propriedade. A It
propriedade contém uma coleção de registros que compartilham um valor na propriedade agrupada. Você pode iterar sobre a It
propriedade para recuperar os registros individuais.
A GroupBy propriedade geralmente é usada com métodos de agregação. Você pode usar os seguintes métodos de agregação:
Count()
Average(
column)
Sum(
column)
Max(
column)
Min(
column)
Where(
Condição)
Any()
All(
Condição)
Para obter mais informações, consulte a visão geral do controle do servidor Web LinqDataSource e como agrupar e agregar dados usando o controle LinqDataSource.