LinqDataSource.GroupBy Właściwość
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Pobiera lub ustawia wartość określającą, które właściwości są używane do grupowania pobranych danych.
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
Wartość właściwości
Ciąg używany do tworzenia klauzuli Grupuj według.
Przykłady
W poniższym przykładzie przedstawiono kontrolkę LinqDataSource, która grupuje zwrócone dane przez właściwość o nazwie Category
. Zwraca wartości udostępnione i oblicza średnią cenę dla pogrupowanych rekordów.
<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>
W poniższym przykładzie przedstawiono kontrolkę LinqDataSource skonfigurowaną do grupowania według dwóch kolumn. Właściwość Key
odwołuje się do obiektu, który ma dwie właściwości, ProductCategory
i Color
. Nazwa obiektu reprezentowanego przez It
została zmieniona Products
. Zmieniono nazwę obiektu Products
zawiera kolekcję poszczególnych rekordów w grupowaniu, a każde wystąpienie zawiera wszystkie kolumny z tabeli 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>
W poniższym przykładzie przedstawiono dwie kontrolki ListView służące do wyświetlania danych z kontrolki LinqDataSource w poprzednim przykładzie. Jedna kontrolka ListView wyświetla zgrupowane dane, a druga kontrolka ListView wyświetla poszczególne nazwy produktów należących do tej grupy. Właściwość DataSource zagnieżdżonej kontrolki powiązanej z danymi jest ustawiona na Products
, czyli alias obiektu 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>
Uwagi
Właściwość GroupBy służy do określania, które właściwości są używane do konsolidowania rekordów danych, które mają te same wartości. Jeśli na przykład ustawisz właściwość GroupBy na Name
, wszystkie rekordy w zapytaniu, które mają tę samą wartość właściwości Name
, zostaną zwrócone jako pojedynczy skonsolidowany rekord.
Do właściwości GroupBy można przypisać więcej niż jedną właściwość, otaczając wszystkie właściwości funkcji new
i oddzielając każdą właściwość za pomocą przecinka. Aby na przykład pogrupować według właściwości Name
, a następnie Category
, ustaw właściwość GroupBy na new(Name, Category)
.
Wartości we właściwości używanej do grupowania są zwracane za pośrednictwem wygenerowanej właściwości o nazwie Key
. Właściwość Key
należy uwzględnić we właściwości Select w celu pobrania pogrupowanych wartości. Właściwość Key
można ustawić na alias przy użyciu słowa kluczowego As
, ale nie musisz używać aliasu. Można na przykład ustawić właściwość GroupBy na właściwość o nazwie Category
. Skonsolidowane wartości można pobrać z właściwości Category
, ustawiając właściwość Select na wartość new(Key As ProductCategory)
.
Dostęp do poszczególnych rekordów w grupowaniu można uzyskać, włączając właściwość It
we właściwości Select. Właściwość It
zawiera kolekcję rekordów, które współdzielą wartość we właściwości pogrupowanej. Aby pobrać poszczególne rekordy, można wykonać iterację po właściwości It
.
Właściwość GroupBy jest często używana z metodami agregacji. Można użyć następujących metod agregacji:
Count()
kolumny kolumny kolumny kolumny Where(
warunek)
Any()
All(
warunek)
Aby uzyskać więcej informacji, zobacz LinqDataSource Web Server Control Overview and How to: Group and Aggregate Data Using the LinqDataSource Control.