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 Group By.

Przykłady

W poniższym przykładzie przedstawiono kontrolkę LinqDataSource , która grupuje zwrócone dane według właściwości 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ę skonfigurowaną LinqDataSource 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 obiekt ma nazwę Products. Zmieniono nazwę Products obiektu 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 ListView kontrolki do wyświetlania danych z kontrolki LinqDataSource w poprzednim przykładzie. Jedna ListView kontrolka wyświetla pogrupowane dane, a druga ListView wyświetla poszczególne nazwy produktów należących do tej grupy. Właściwość zagnieżdżonej kontrolki DataSource powiązanej z danymi jest ustawiona na Productswartość , która jest aliasem It obiektu.

<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ść służy do określania GroupBy , 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 GroupBy właściwość na Namewartość , wszystkie rekordy w zapytaniu, które mają tę samą Name wartość właściwości, zostaną zwrócone jako pojedynczy skonsolidowany rekord.

Do właściwości można przypisać więcej niż jedną właściwość GroupBy , otaczając wszystkie właściwości funkcji new i oddzielając każdą właściwość za pomocą przecinka. Na przykład aby pogrupować według właściwości Name , a następnie Categoryustaw GroupBy właściwość 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ść należy dołączyć Key do właściwości, Select aby pobrać pogrupowane wartości. Właściwość można ustawić Key na alias przy użyciu słowa kluczowego As , ale nie musisz używać aliasu. Na przykład można ustawić GroupBy właściwość na właściwość o nazwie Category. Skonsolidowane wartości można pobrać z Category właściwości, ustawiając Select właściwość na new(Key As ProductCategory).

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

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

  • Count()

  • Average(Kolumna)

  • Sum(Kolumna)

  • Max(Kolumna)

  • Min(Kolumna)

  • 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 (Omówienie kontroli serwera sieci Web LinqDataSource) i How to: Group and Aggregate Data Using the LinqDataSource Control (Instrukcje: grupowanie i agregowanie danych przy użyciu kontrolki LinqDataSource).

Dotyczy