LinqDataSource.GroupBy Eigenschaft

Definition

Dient zum Abrufen oder Festlegen eines Werts, der angibt, welche Eigenschaften zum Gruppieren der abgerufenen Daten verwendet werden.

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

Eigenschaftswert

Eine Zeichenfolge, die zum Erstellen der Group By-Klausel verwendet wird.

Beispiele

Das folgende Beispiel zeigt ein LinqDataSource Steuerelement, das die zurückgegebenen Daten durch eine Eigenschaft mit dem Namen Categorygruppiert. Sie gibt die freigegebenen Werte zurück und berechnet den Durchschnittspreis für die gruppierten Datensätze.

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

Das folgende Beispiel zeigt ein LinqDataSource-Steuerelement, das für die Gruppierung nach zwei Spalten konfiguriert ist. Die Key-Eigenschaft verweist auf ein Objekt mit zwei Eigenschaften, ProductCategory und Color. Das durch It dargestellte Objekt wird Productsumbenannt. Das umbenannte Products-Objekt enthält eine Auflistung der einzelnen Datensätze in einer Gruppierung, und jede Instanz enthält alle Spalten aus der Tabelle "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>

Das folgende Beispiel zeigt zwei ListView-Steuerelemente zum Anzeigen der Daten aus dem LinqDataSource-Steuerelement im vorherigen Beispiel. Ein ListView Steuerelement zeigt die gruppierten Daten und das andere ListView Steuerelement die einzelnen Namen von Produkten an, die zu dieser Gruppe gehören. Die DataSource-Eigenschaft des geschachtelten datengebundenen Steuerelements wird auf Productsfestgelegt, bei dem es sich um den Alias für das It-Objekt handelt.

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

Hinweise

Mit der GroupBy-Eigenschaft können Sie angeben, welche Eigenschaften zum Konsolidieren von Datensätzen mit denselben Werten verwendet werden. Wenn Sie z. B. die GroupBy Eigenschaft auf Namefestlegen, werden alle Datensätze in der Abfrage mit demselben Name Eigenschaftswert als einzelner konsolidierter Datensatz zurückgegeben.

Sie können der GroupBy-Eigenschaft mehrere Eigenschaften zuweisen, indem Sie alle Eigenschaften in die new-Funktion einschließen und jede Eigenschaft mithilfe eines Kommas trennen. Wenn Sie z. B. nach den Eigenschaften Name gruppieren und dann Category, legen Sie die GroupBy-Eigenschaft auf new(Name, Category)fest.

Die Werte in der Eigenschaft, die für die Gruppierung verwendet werden, werden über eine generierte Eigenschaft mit dem Namen Keyzurückgegeben. Sie fügen die Key-Eigenschaft in die eigenschaft Select ein, um die gruppierten Werte abzurufen. Sie können die Key-Eigenschaft auf einen Alias festlegen, indem Sie das schlüsselwort As verwenden, sie müssen jedoch keinen Alias verwenden. Beispielsweise können Sie die eigenschaft GroupBy auf eine Eigenschaft mit dem Namen Categoryfestlegen. Sie können die konsolidierten Werte aus der eigenschaft Category abrufen, indem Sie die eigenschaft Select auf new(Key As ProductCategory)festlegen.

Sie können auf die einzelnen Datensätze in einer Gruppierung zugreifen, indem Sie die eigenschaft It in die eigenschaft Select einschließen. Die It-Eigenschaft enthält eine Auflistung von Datensätzen, die einen Wert in der gruppierten Eigenschaft gemeinsam verwenden. Sie können die It-Eigenschaft durchlaufen, um die einzelnen Datensätze abzurufen.

Die GroupBy-Eigenschaft wird häufig mit Aggregationsmethoden verwendet. Sie können die folgenden Aggregatmethoden verwenden:

  • Count()

  • Average( Spalten-)

  • Sum( Spalten-)

  • Max( Spalten-)

  • Min( Spalten-)

  • Where( Bedingung)

  • Any()

  • All( Bedingung)

Weitere Informationen finden Sie unter LinqDataSource Web Server Control Overview and How to: Group and Aggregate Data Using the LinqDataSource Control.

Gilt für: