共用方式為


LinqDataSource.GroupBy 屬性

定義

取得或設定值,指定用於分組擷取數據的屬性。

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

屬性值

用來建立 Group By 子句的字串。

範例

下列範例顯示 LinqDataSource 控件,該控件會由名為 Category的屬性將傳回的數據分組。 它會傳回共用值,並計算群組記錄的平均價格。

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

下列範例顯示設定為依兩個數據行分組的 LinqDataSource 控件。 Key 屬性會參考具有兩個屬性的物件,ProductCategoryColorIt 所代表的物件會重新命名為 Products。 重新命名的 Products 物件包含群組中個別記錄的集合,而且每個實例都包含 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>

下列範例顯示兩個 ListView 控件,用於顯示上一個範例中 LinqDataSource 控件的數據。 一個 ListView 控件會顯示分組的數據,另一個 ListView 控件會顯示屬於該群組的個別產品名稱。 巢狀數據綁定控件的 DataSource 屬性會設定為 Products,這是 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>

備註

您可以使用 GroupBy 屬性來指定哪些屬性用於合併具有相同值的數據記錄。 例如,如果您將 GroupBy 屬性設定為 Name,則查詢中具有相同 Name 屬性值的所有記錄都會以單一合併記錄傳回。

您可以將多個屬性指派給 GroupBy 屬性,方法是將 new 函式中的所有屬性括住,並使用逗號分隔每個屬性。 例如,若要依屬性分組 Name,然後 Category,請將 GroupBy 屬性設定為 new(Name, Category)

屬性中用於分組的值會透過名為 Key產生的屬性傳回。 您可以在 Select 屬性中包含 Key 屬性,以擷取群組值。 您可以使用 As 關鍵詞將 Key 屬性設定為別名,但不需要使用別名。 例如,您可以將 GroupBy 屬性設定為名為 Category的屬性。 您可以將 Select 屬性設定為 new(Key As ProductCategory),從 Category 屬性擷取合併的值。

您可以藉由在 Select 屬性中包含 It 屬性,來存取群組中的個別記錄。 It 屬性包含共用群組屬性中值之記錄的集合。 您可以逐一查看 It 屬性來擷取個別記錄。

GroupBy 屬性通常與匯總方法搭配使用。 您可以使用下列匯總方法:

  • Count()

  • Average( 數據行)

  • Sum( 數據行)

  • Max( 數據行)

  • Min( 數據行)

  • Where( 條件)

  • Any()

  • All( 條件)

如需詳細資訊,請參閱 LinqDataSource Web 伺服器控制項概觀如何:使用 LinqDataSource 控制件群組和匯總資料

適用於