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

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

Beispiele

Das folgende Beispiel zeigt ein LinqDataSource Steuerelement, das die zurückgegebenen Daten mit einer Eigenschaft namens Categorygruppiert. Es 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 durch zwei Spalten konfiguriert ist. Die Key -Eigenschaft verweist auf ein Objekt mit zwei Eigenschaften und ColorProductCategory . Das durch It dargestellte Objekt wird umbenannt Products. 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 der Produkte an, die zu dieser Gruppe gehören. Die Eigenschaft des DataSource geschachtelten datengebundenen Steuerelements ist auf festgelegt, wobei es sich um Productsden 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

Sie verwenden die GroupBy -Eigenschaft, um anzugeben, welche Eigenschaften zum Konsolidieren von Datensätzen mit den gleichen Werten verwendet werden. Wenn Sie beispielsweise die GroupBy -Eigenschaft auf Namefestlegen, werden alle Datensätze in der Abfrage, die denselben Name Eigenschaftswert aufweisen, 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 möchten, legen CategorySie 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 schließen die Key -Eigenschaft in die Select -Eigenschaft ein, um die gruppierten Werte abzurufen. Sie können die Key Eigenschaft auf einen Alias festlegen, indem Sie das As Schlüsselwort verwenden, aber Sie müssen keinen Alias verwenden. Beispielsweise können Sie die GroupBy Eigenschaft auf eine Eigenschaft mit dem Namen Categoryfestlegen. 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 gemeinsam haben. 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(Spalte)

  • Sum(Spalte)

  • Max(Spalte)

  • Min(Spalte)

  • Where(condition)

  • Any()

  • All(condition)

Weitere Informationen finden Sie unter LinqDataSource-Webserversteuerelement übersicht und Vorgehensweise: Gruppieren und Aggregieren von Daten mithilfe des LinqDataSource-Steuerelements.

Gilt für: