LinqDataSource.GroupBy Eigenschaft

Definition

Ruft einen Wert ab, der die zum Gruppieren der abgerufenen Daten verwendeten Eigenschaften angibt, oder legt diesen fest.

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

String

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

Beispiele

Das folgende Beispiel zeigt ein Steuerelement, das die zurückgegebenen Daten durch eine LinqDataSource 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>

Im folgenden Beispiel wird ein LinqDataSource Steuerelement gezeigt, das für die Gruppierung von zwei Spalten konfiguriert ist. Die Key Eigenschaft verweist auf ein Objekt mit zwei Eigenschaften und ProductCategory Color. Das durch dargestellte It ProductsObjekt wird umbenannt. 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 "Produkte".

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

Im folgenden Beispiel werden zwei ListView Steuerelemente zum Anzeigen der Daten aus dem LinqDataSource Steuerelement im vorherigen Beispiel gezeigt. 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 Eigenschaft des geschachtelten datengebundenen Steuerelements DataSource wird auf Productsfestgelegt, was der Alias für das It Objekt ist.

<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

Sie verwenden die GroupBy Eigenschaft, um anzugeben, welche Eigenschaften zum Konsolidieren von Datensätzen verwendet werden, die dieselben Werte aufweisen. Wenn Sie beispielsweise 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 Eigenschaft mehrere Eigenschaften zuweisen, indem Sie alle Eigenschaften in die GroupBy new Funktion einschließen und jede Eigenschaft mithilfe eines Kommas trennen. Wenn Sie z. B. nach den Eigenschaften Name gruppieren möchten, und legen Sie dann Categorydie GroupBy Eigenschaft auf new(Name, Category)" fest.

Die Werte in der Eigenschaft, die für die Gruppierung verwendet werden, werden über eine generierte Eigenschaft namens Keyzurückgegeben. Sie fügen die Eigenschaft in die Select Eigenschaft ein, um die Key gruppierten Werte abzurufen. Sie können die Key Eigenschaft mithilfe des As Schlüsselworts auf einen Alias festlegen, sie sind jedoch nicht erforderlich, um einen Alias zu verwenden. Beispielsweise können Sie die Eigenschaft auf eine Eigenschaft mit dem GroupBy Namen " Category. Sie können die konsolidierten Werte aus der Category Eigenschaft abrufen, indem Sie die Select Eigenschaft auf new(Key As ProductCategory)" festlegen.

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

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

  • Count()

  • Average(Spalte )

  • Sum(Spalte )

  • Max(Spalte )

  • Min(Spalte )

  • Where(Zustand )

  • Any()

  • All(Zustand )

Weitere Informationen finden Sie unter LinqDataSource Web Server Control Übersicht und Vorgehensweise: Gruppieren und Aggregatdaten mithilfe des LinqDataSource-Steuerelements.

Gilt für: