LinqDataSource.GroupBy Propiedad

Definición

Obtiene o establece un valor que especifica qué propiedades se utilizan 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 LinqDataSource control 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 LinqDataSource control configurado para agrupar por dos columnas. La Key propiedad hace referencia a un objeto que tiene dos propiedades y ProductCategoryColor. Se ha Productscambiado el nombre del objeto representado por It . El objeto cuyo nombre ha cambiado Products 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 ListView controles para mostrar los datos del LinqDataSource control en el ejemplo anterior. Un ListView control muestra los datos agrupados y el otro ListView control muestra los nombres individuales de los productos que pertenecen a ese grupo. La propiedad del DataSource control enlazado a datos anidada se establece Productsen , que es el alias del 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>

Comentarios

Utilice la GroupBy propiedad para especificar qué propiedades se usan para consolidar los registros de datos que tienen los mismos valores. Por ejemplo, si establece la GroupBy propiedad Nameen , todos los registros de la consulta que tienen el mismo Name valor de propiedad se devuelven como un único registro consolidado.

Puede asignar más de una propiedad a la GroupBy propiedad si incluye todas las propiedades de la new función y separa cada propiedad mediante una coma. Por ejemplo, para agrupar por las propiedades Name y, a continuación Category, establezca la GroupBy propiedad 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 se Key incluye en la Select propiedad para recuperar los valores agrupados. Puede establecer la Key propiedad en un alias mediante la As palabra clave , pero no es necesario usar un alias. Por ejemplo, puede establecer la GroupBy propiedad en una propiedad denominada Category. Puede recuperar los valores consolidados de la Category propiedad estableciendo la Select propiedad en new(Key As ProductCategory).

Puede acceder a los registros individuales de una agrupación mediante la inclusión de la It propiedad en la Select propiedad . La It propiedad contiene una colección de registros que comparten un valor en la propiedad agrupada. Puede iterar sobre la It propiedad para recuperar los registros individuales.

La GroupBy propiedad se usa a menudo con métodos de agregación. Puede usar los métodos agregados siguientes:

  • Count()

  • Average(Columna)

  • Sum(Columna)

  • Max(Columna)

  • Min(Columna)

  • Where(condition)

  • Any()

  • All(condition)

Para obtener más información, vea Información general sobre el control de servidor web LinqDataSource y Cómo: Agrupar y agregar datos mediante el control LinqDataSource.

Se aplica a