Sdílet prostřednictvím


LinqDataSource.GroupBy Vlastnost

Definice

Získá nebo nastaví hodnotu, která určuje, které vlastnosti se používají pro seskupení načtených dat.

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

Hodnota vlastnosti

Řetězec, který se používá k vytvoření klauzule Group By.

Příklady

Následující příklad ukazuje LinqDataSource ovládací prvek, který seskupuje vrácená data podle vlastnosti s názvem Category. Vrátí sdílené hodnoty a vypočítá průměrnou cenu seskupených záznamů.

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

Následující příklad ukazuje LinqDataSource ovládací prvek, který je nakonfigurován pro seskupení podle dvou sloupců. Vlastnost Key odkazuje na objekt, který má dvě vlastnosti, ProductCategory a Color. Objekt reprezentovaný It je přejmenován Products. Přejmenovaný objekt Products obsahuje kolekci jednotlivých záznamů ve seskupení a každá instance obsahuje všechny sloupce z tabulky 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>

Následující příklad ukazuje dva ovládací prvky ListView pro zobrazení dat z ovládacího prvku LinqDataSource v předchozím příkladu. Jeden ListView ovládací prvek zobrazuje seskupovaná data a druhý ovládací prvek ListView zobrazuje jednotlivé názvy produktů, které patří do této skupiny. Vlastnost DataSource vnořeného ovládacího prvku vázaného na data je nastavena na Products, což je alias pro objekt 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>

Poznámky

Vlastnost GroupBy slouží k určení vlastností, které se používají ke sloučení datových záznamů se stejnými hodnotami. Pokud například nastavíte vlastnost GroupBy na Name, vrátí se všechny záznamy v dotazu, které mají stejnou hodnotu vlastnosti Name, jako jeden konsolidovaný záznam.

Ke vlastnosti GroupBy můžete přiřadit více než jednu vlastnost tak, že všechny vlastnosti uzavřete do funkce new a jednotlivé vlastnosti oddělíte čárkou. Chcete-li například seskupit podle vlastností Name a potom Category, nastavte vlastnost GroupBy na new(Name, Category).

Hodnoty ve vlastnosti, které se používají pro seskupování, se vrátí prostřednictvím vygenerované vlastnosti s názvem Key. Do vlastnosti Select zahrnete vlastnost Key, která načte seskupené hodnoty. Vlastnost Key můžete nastavit na alias pomocí klíčového slova As, ale nemusíte používat alias. Můžete například nastavit vlastnost GroupBy na vlastnost s názvem Category. Konsolidované hodnoty můžete načíst z vlastnosti Category nastavením vlastnosti Select na new(Key As ProductCategory).

K jednotlivým záznamům ve skupině můžete přistupovat tak, že do vlastnosti Select zahrnete vlastnost It. Vlastnost It obsahuje kolekci záznamů, které sdílejí hodnotu ve seskupené vlastnosti. Můžete iterovat přes vlastnost It a načíst jednotlivé záznamy.

Vlastnost GroupBy se často používá s metodami agregace. Můžete použít následující agregační metody:

  • Count()

  • sloupce

  • sloupce

  • sloupce

  • sloupce

  • podmínky

  • Any()

  • podmínky

Další informace najdete v tématu Přehled ovládacích prvků Webového serveru LinqDataSource a Postupy: Seskupení a agregace dat pomocí ovládacího prvku LinqDataSource.

Platí pro