LinqDataSource.GroupBy Свойство

Определение

Возвращает или задает значение, определяющее свойства, используемые для группировки и получения данных.Gets or sets a value that specifies which properties are used for grouping the retrieved data.

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.A string that is used to create the Group By clause.

Примеры

В следующем примере показан элемент управления LinqDataSource, который группирует возвращаемые данные по свойству с именем Category.The following example shows a LinqDataSource control that groups the returned data by a property named Category. Он возвращает общие значения и вычисляет среднюю цену для сгруппированных записей.It returns the shared values and calculates the average price for the grouped records.

<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, для которого настроено группирование по двум столбцам.The following example shows a LinqDataSource control that is configured to group by two columns. Свойство Key ссылается на объект с двумя свойствами: ProductCategory и Color.The Key property references an object that has two properties, ProductCategory and Color. Объект, представленный It, переименовывается Products.The object represented by It is renamed Products. Переименованный объект Products содержит коллекцию отдельных записей в группировании, а каждый экземпляр содержит все столбцы из таблицы Products.The renamed Products object contains a collection of the individual records in a grouping, and each instance contains all the columns from the Products table.

<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 в предыдущем примере.The following example shows two ListView controls for displaying the data from the LinqDataSource control in the previous example. Один элемент управления ListView отображает сгруппированные данные, а другой элемент управления ListView отображает отдельные имена продуктов, принадлежащих этой группе.One ListView control displays the grouped data and the other ListView control displays the individual names of products that belong to that group. Свойству DataSource вложенного элемента управления с привязкой к данным присвоено значение Products, которое является псевдонимом для объекта It.The nested data-bound control's DataSource property is set to Products, which is the alias for the It object.

<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, чтобы указать, какие свойства используются для консолидации записей данных с одинаковыми значениями.You use the GroupBy property to specify which properties are used for consolidating data records that have the same values. Например, если задать для свойства GroupBy значение Name, то в качестве одной консолидированной записи возвращаются все записи в запросе с одинаковым значением свойства Name.For example, if you set the GroupBy property to Name, all the records in the query that have the same Name property value are returned as a single consolidated record.

Можно назначить несколько свойств свойству GroupBy, заключив все свойства функции new и разделив каждое свойство с помощью запятой.You can assign more than one property to the GroupBy property by enclosing all the properties in the new function and separating each property by using a comma. Например, чтобы выполнить группировку по свойствам Name а затем Category, задайте для свойства GroupBy значение new(Name, Category).For example, to group by the properties Name and then Category, set the GroupBy property to new(Name, Category).

Значения в свойстве, используемые для группирования, возвращаются с помощью созданного свойства с именем Key.The values in the property that are used for grouping are returned through a generated property named Key. Чтобы получить сгруппированные значения, включите свойство Key в свойство Select.You include the Key property in the Select property to retrieve the grouped values. Можно задать для свойства Key псевдоним, используя ключевое слово As, но не обязательно использовать псевдоним.You can set the Key property to an alias by using the As keyword, but you are not required to use an alias. Например, свойству GroupBy можно присвоить свойство с именем Category.For example, you might set the GroupBy property to a property named Category. Можно извлечь консолидированные значения из свойства Category, задав свойству Select значение new(Key As ProductCategory).You can retrieve the consolidated values from the Category property by setting the Select property to new(Key As ProductCategory).

Можно получить доступ к отдельным записям в группировании, включив свойство It в свойство Select.You can access the individual records in a grouping by including the It property in the Select property. Свойство It содержит коллекцию записей, совместно использующих значение в сгруппированном свойстве.The It property contains a collection of records that share a value in the grouped property. Можно выполнить итерацию по свойству It, чтобы получить отдельные записи.You can iterate over the It property to retrieve the individual records.

Свойство GroupBy часто используется с методами агрегирования.The GroupBy property is often used with aggregation methods. Можно использовать следующие статистические методы:You can use the following aggregate methods:

  • Count()

  • ) Average( столбцаAverage( column )

  • ) Sum( столбцаSum( column )

  • ) Max( столбцаMax( column )

  • ) Min( столбцаMin( column )

  • условие Where( )Where( condition )

  • Any()

  • условие All( )All( condition )

Дополнительные сведения см. в статьях Общие сведения о серверном веб-элементе управления LinqDataSource и инструкции: Группирование и статистическая обработка данных с помощью элемента управления LinqDataSource.For more information, see LinqDataSource Web Server Control Overview and How to: Group and Aggregate Data Using the LinqDataSource Control.

Применяется к