LinqDataSource.GroupBy Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene o establece un valor que especifica qué propiedades se usan para agrupar los datos 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 propiedad
Cadena que se usa para crear la cláusula Group By.
Ejemplos
En el ejemplo siguiente se muestra un control LinqDataSource que agrupa los datos devueltos por una propiedad denominada Category
. Devuelve los valores compartidos y calcula el precio medio de los 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>
En el ejemplo siguiente se muestra un control LinqDataSource que está configurado para agrupar por dos columnas. La propiedad Key
hace referencia a un objeto que tiene dos propiedades, ProductCategory
y Color
. Se cambia el nombre del objeto representado por It
Products
. El objeto Products
cuyo nombre ha cambiado contiene una colección de los registros individuales de una agrupación y cada instancia contiene todas las columnas de la tabla Products.
<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>
En el ejemplo siguiente se muestran dos controles ListView para mostrar los datos del control LinqDataSource en el ejemplo anterior. Un control ListView muestra los datos agrupados y el otro control ListView muestra los nombres individuales de productos que pertenecen a ese grupo. La propiedad DataSource del control enlazado a datos anidada se establece en Products
, que es el alias del 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>
Comentarios
Use la propiedad GroupBy para especificar qué propiedades se usan para consolidar los registros de datos que tienen los mismos valores. Por ejemplo, si establece la propiedad GroupBy en Name
, todos los registros de la consulta que tienen el mismo valor de propiedad Name
se devuelven como un único registro consolidado.
Puede asignar más de una propiedad a la propiedad GroupBy si incluye todas las propiedades de la función new
y separa cada propiedad mediante una coma. Por ejemplo, para agrupar por las propiedades Name
y, a continuación, Category
, establezca la propiedad GroupBy en new(Name, Category)
.
Los valores de la propiedad que se usan para la agrupación se devuelven a través de una propiedad generada denominada Key
. La propiedad Key
se incluye en la propiedad Select para recuperar los valores agrupados. Puede establecer la propiedad Key
en un alias mediante la palabra clave As
, pero no es necesario usar un alias. Por ejemplo, puede establecer la propiedad GroupBy en una propiedad denominada Category
. Puede recuperar los valores consolidados de la propiedad Category
estableciendo la propiedad Select en new(Key As ProductCategory)
.
Puede acceder a los registros individuales de una agrupación mediante la inclusión de la propiedad It
en la propiedad Select. La propiedad It
contiene una colección de registros que comparten un valor en la propiedad agrupada. Puede iterar en la propiedad It
para recuperar los registros individuales.
La propiedad GroupBy se usa a menudo con métodos de agregación. Puede usar los métodos agregados siguientes:
Count()
de columna de de columna de de columna de de columna de Where(
)
de condiciónAny()
All(
)
de condición
Para obtener más información, vea Información general del control de servidor web LinqDataSource y Cómo: Agrupar y agregar datos mediante el control LinqDataSource.