다음을 통해 공유


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>

다음 예제에서는 두 열을 그룹화하도록 구성된 LinqDataSource 컨트롤을 보여 줍니다. Key 속성은 ProductCategoryColor두 개의 속성이 있는 개체를 참조합니다. 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 컨트롤의 데이터를 표시하기 위한 두 개의 ListView 컨트롤을 보여 줍니다. 한 ListView 컨트롤은 그룹화된 데이터를 표시하고 다른 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 속성 값이 동일한 쿼리의 모든 레코드가 단일 통합 레코드로 반환됩니다.

new 함수의 모든 속성을 묶고 쉼표로 각 속성을 구분하여 GroupBy 속성에 둘 이상의 속성을 할당할 수 있습니다. 예를 들어 속성 Name 그룹화한 다음 CategoryGroupBy 속성을 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 웹 서버 컨트롤 개요방법: LinqDataSource 컨트롤사용하여 데이터 그룹화 및 집계를 참조하세요.

적용 대상