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
ссылается на объект с двумя свойствами, 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>
В следующем примере показаны два элемента управления 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
. Вы включаете свойство Key
в свойство Select для получения сгруппированных значений. Свойство Key
можно задать для псевдонима с помощью ключевого слова As
, но для использования псевдонима не требуется. Например, можно задать свойство GroupBy свойству с именем Category
. Вы можете получить консолидированные значения из свойства Category
, задав для свойства Select значение new(Key As ProductCategory)
.
Вы можете получить доступ к отдельным записям в группе, включив свойство It
в свойство Select. Свойство It
содержит коллекцию записей, которые совместно используют значение в сгруппированного свойства. Чтобы получить отдельные записи, можно выполнить итерацию по свойству It
.
Свойство GroupBy часто используется с методами агрегирования. Вы можете использовать следующие статистические методы:
Count()
столбца столбца столбца столбца условие
Where(
)
Any()
условие
All(
)
Дополнительные сведения см. в обзоре управления веб-сервером LinqDataSource и how to: Group and Aggregate Data Using the LinqDataSource Control.