次の方法で共有


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

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

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

次の例は、2 つの列でグループ化するように構成された LinqDataSource コントロールを示しています。 Key プロパティは、ProductCategoryColorの 2 つのプロパティを持つオブジェクトを参照します。 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 プロパティを使用して、同じ値を持つデータ レコードを統合するために使用するプロパティを指定します。 たとえば、GroupBy プロパティを Nameに設定すると、同じ Name プロパティ値を持つクエリ内のすべてのレコードが 1 つの統合レコードとして返されます。

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

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

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

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

  • Count()

  • する

  • する

  • する

  • する

  • Where( 条件の)

  • Any()

  • All( 条件の)

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

適用対象