Udostępnij za pośrednictwem


LinqDataSource.GroupBy Właściwość

Definicja

Pobiera lub ustawia wartość określającą, które właściwości są używane do grupowania pobranych danych.

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

Wartość właściwości

Ciąg używany do tworzenia klauzuli Grupuj według.

Przykłady

W poniższym przykładzie przedstawiono kontrolkę LinqDataSource, która grupuje zwrócone dane przez właściwość o nazwie Category. Zwraca wartości udostępnione i oblicza średnią cenę dla pogrupowanych rekordów.

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

W poniższym przykładzie przedstawiono kontrolkę LinqDataSource skonfigurowaną do grupowania według dwóch kolumn. Właściwość Key odwołuje się do obiektu, który ma dwie właściwości, ProductCategory i Color. Nazwa obiektu reprezentowanego przez It została zmieniona Products. Zmieniono nazwę obiektu Products zawiera kolekcję poszczególnych rekordów w grupowaniu, a każde wystąpienie zawiera wszystkie kolumny z tabeli 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>

W poniższym przykładzie przedstawiono dwie kontrolki ListView służące do wyświetlania danych z kontrolki LinqDataSource w poprzednim przykładzie. Jedna kontrolka ListView wyświetla zgrupowane dane, a druga kontrolka ListView wyświetla poszczególne nazwy produktów należących do tej grupy. Właściwość DataSource zagnieżdżonej kontrolki powiązanej z danymi jest ustawiona na Products, czyli alias obiektu 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>

Uwagi

Właściwość GroupBy służy do określania, które właściwości są używane do konsolidowania rekordów danych, które mają te same wartości. Jeśli na przykład ustawisz właściwość GroupBy na Name, wszystkie rekordy w zapytaniu, które mają tę samą wartość właściwości Name, zostaną zwrócone jako pojedynczy skonsolidowany rekord.

Do właściwości GroupBy można przypisać więcej niż jedną właściwość, otaczając wszystkie właściwości funkcji new i oddzielając każdą właściwość za pomocą przecinka. Aby na przykład pogrupować według właściwości Name, a następnie Category, ustaw właściwość GroupBy na new(Name, Category).

Wartości we właściwości używanej do grupowania są zwracane za pośrednictwem wygenerowanej właściwości o nazwie Key. Właściwość Key należy uwzględnić we właściwości Select w celu pobrania pogrupowanych wartości. Właściwość Key można ustawić na alias przy użyciu słowa kluczowego As, ale nie musisz używać aliasu. Można na przykład ustawić właściwość GroupBy na właściwość o nazwie Category. Skonsolidowane wartości można pobrać z właściwości Category, ustawiając właściwość Select na wartość new(Key As ProductCategory).

Dostęp do poszczególnych rekordów w grupowaniu można uzyskać, włączając właściwość It we właściwości Select. Właściwość It zawiera kolekcję rekordów, które współdzielą wartość we właściwości pogrupowanej. Aby pobrać poszczególne rekordy, można wykonać iterację po właściwości It.

Właściwość GroupBy jest często używana z metodami agregacji. Można użyć następujących metod agregacji:

  • Count()

  • kolumny

  • kolumny

  • kolumny

  • kolumny

  • Where( warunek)

  • Any()

  • All( warunek)

Aby uzyskać więcej informacji, zobacz LinqDataSource Web Server Control Overview and How to: Group and Aggregate Data Using the LinqDataSource Control.

Dotyczy