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()Average(Столбца)Sum(Столбца)Max(Столбца)Min(Столбца)Where(состояние)Any()All(состояние)
Дополнительные сведения см. в разделе LinqDataSource Web Server Control Overviewи How to: Group and Aggregate Data Using the LinqDataSource Control.