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é

String

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

Exemples

L’exemple suivant montre un LinqDataSource contrôle 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 regroupé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 LinqDataSource contrôle configuré pour regrouper par deux colonnes. La Key propriété fait référence à un objet qui a deux propriétés et ProductCategory Color. L’objet représenté par It est renommé Products. L’objet renommé Products contient une collection d’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 ListView contrôles pour afficher les données du LinqDataSource contrôle dans l’exemple précédent. Un ListView contrôle affiche les données regroupées et l’autre ListView contrôle affiche les noms individuels des produits appartenant à ce groupe. La propriété du DataSource 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 GroupBy propriété 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 GroupBy propriété Namesur , tous les enregistrements de la requête qui ont la même Name valeur de propriété sont retournés en tant qu’enregistrement consolidé unique.

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

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 Key propriété dans la Select propriété pour récupérer les valeurs groupées. Vous pouvez définir la Key propriété sur un alias à l’aide du As mot clé, mais vous n’êtes pas obligé d’utiliser un alias. Par exemple, vous pouvez définir la GroupBy propriété sur une propriété nommée Category. Vous pouvez récupérer les valeurs consolidées de la Category propriété en définissant la Select propriété sur new(Key As ProductCategory).

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

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

  • Count()

  • Average( column )

  • Sum( column )

  • Max( column )

  • Min( column )

  • Where(Condition )

  • Any()

  • All(Condition )

Pour plus d’informations, consultez La vue d’ensemble du contrôle web LinqDataSource et Comment : regrouper et agréger des données à l’aide du contrôle LinqDataSource.

S’applique à