LinqDataSource.GroupBy Propriété

Définition

Obtient ou définit une valeur qui spécifie les propriétés utilisées pour regrouper les données récupérées.

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

Valeur de propriété

Chaîne utilisée pour créer la clause Group By.

Exemples

L’exemple suivant montre un contrôle LinqDataSource qui regroupe les données retournées par une propriété nommée Category. Elle retourne les valeurs partagées et calcule le prix moyen des enregistrements groupés.

<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>

L’exemple suivant montre un contrôle LinqDataSource configuré pour regrouper par deux colonnes. La propriété Key fait référence à un objet qui a deux propriétés, ProductCategory et Color. L’objet représenté par It est renommé Products. L’objet Products renommé contient une collection des enregistrements individuels dans un regroupement, et chaque instance contient toutes les colonnes de la table 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>

L’exemple suivant montre deux contrôles ListView pour afficher les données du contrôle LinqDataSource dans l’exemple précédent. Un contrôle ListView affiche les données groupées et l’autre contrôle ListView affiche les noms individuels des produits appartenant à ce groupe. La propriété DataSource du contrôle imbriqué lié aux données est définie sur Products, qui est l’alias de l’objet 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>

Remarques

Vous utilisez la propriété GroupBy pour spécifier les propriétés utilisées pour consolider les enregistrements de données qui ont les mêmes valeurs. Par exemple, si vous définissez la propriété GroupBy sur Name, tous les enregistrements de la requête qui ont la même valeur de propriété Name sont retournés en tant qu’enregistrement consolidé unique.

Vous pouvez affecter plusieurs propriétés à la propriété GroupBy en plaçant toutes les propriétés dans la fonction new et en séparant chaque propriété à l’aide d’une virgule. Par exemple, pour regrouper par les propriétés Name, puis Category, définissez la propriété GroupBy sur new(Name, Category).

Les valeurs de la propriété utilisées pour le regroupement sont retournées par le biais d’une propriété générée nommée Key. Vous incluez la propriété Key dans la propriété Select pour récupérer les valeurs groupées. Vous pouvez définir la propriété Key sur un alias à l’aide du mot clé As, mais vous n’êtes pas obligé d’utiliser un alias. Par exemple, vous pouvez définir la propriété GroupBy sur une propriété nommée Category. Vous pouvez récupérer les valeurs consolidées de la propriété Category en définissant la propriété Select sur new(Key As ProductCategory).

Vous pouvez accéder aux enregistrements individuels d’un regroupement en incluant la propriété It dans la propriété Select. La propriété It contient une collection d’enregistrements qui partagent une valeur dans la propriété groupée. Vous pouvez itérer sur la propriété It pour récupérer les enregistrements individuels.

La propriété GroupBy est souvent utilisée avec des méthodes d’agrégation. Vous pouvez utiliser les méthodes d’agrégation suivantes :

  • Count()

  • Average( ) de colonne

  • Sum( ) de colonne

  • Max( ) de colonne

  • Min( ) de colonne

  • Where( condition)

  • Any()

  • All( condition)

Pour plus d’informations, consultez Vue d’ensemble du contrôle serveur web LinqDataSource et Guide pratique pour regrouper et agréger des données à l’aide du contrôle LinqDataSource.

S’applique à