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 句の作成に使用される文字列。

次の例は、 という名前CategoryLinqDataSourceプロパティによって返されたデータをグループ化するコントロールを示しています。 共有値を返し、グループ化されたレコードの平均価格を計算します。

<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 2 つの列でグループ化するように構成されているコントロールを示しています。 プロパティは Key 、 と という 2 つのプロパティ ProductCategory を持つオブジェクトを Color参照します。 で It 表されるオブジェクトの名前が に変更されます 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>

次の例は、前の例のコントロールのLinqDataSourceデータを表示するための 2 つのListViewコントロールを示しています。 1 つの ListView コントロールにはグループ化されたデータが表示され、もう 1 つの ListView コントロールにはそのグループに属する製品の個々の名前が表示されます。 入れ子になったデータ バインド コントロールの DataSource プロパティは、 オブジェクトのエイリアスItである にProducts設定されます。

<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 使用して、同じ値を持つデータ レコードを統合するために使用するプロパティを指定します。 たとえば、 プロパティを GroupByName設定すると、同じ Name プロパティ値を持つクエリ内のすべてのレコードが 1 つの統合レコードとして返されます。

関数内のすべてのプロパティを囲み、コンマを GroupBy 使用して各プロパティ new を区切ることで、プロパティに複数のプロパティを割り当てることができます。 たとえば、 プロパティでグループ化し、 プロパティNameGroupBynew(Name, Category)設定しますCategory

グループ化に使用される プロパティの値は、 という名前 Keyの生成されたプロパティを通じて返されます。 グループ化された値を Key 取得するには、 Select プロパティに プロパティを含めます。 キーワードを Key 使用 As してプロパティをエイリアスに設定できますが、エイリアスを使用する必要はありません。 たとえば、 プロパティを という名前CategoryGroupByプロパティに設定できます。 プロパティから統合値を取得するには、 プロパティを CategorySelectnew(Key As ProductCategory)設定します。

プロパティに プロパティを含めることで、グループ化内の個々の It レコードに Select アクセスできます。 プロパティには It 、グループ化されたプロパティの値を共有するレコードのコレクションが含まれています。 プロパティを It 反復処理して、個々のレコードを取得できます。

プロパティは GroupBy 、多くの場合、集計メソッドで使用されます。 次の集計メソッドを使用できます。

  • Count()

  • Average()

  • Sum()

  • Max()

  • Min()

  • Where(condition)

  • Any()

  • All(condition)

詳細については、「 LinqDataSource Web サーバー コントロールの概要 」および「 方法: LinqDataSource コントロールを使用してデータをグループ化および集計する」を参照してください。

適用対象