LinqDataSource.GroupBy Egenskap
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Hämtar eller anger ett värde som anger vilka egenskaper som används för att gruppera hämtade 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
Egenskapsvärde
En sträng som används för att skapa Group By-satsen.
Exempel
I följande exempel visas en LinqDataSource kontroll som grupperar returnerade data med en egenskap med namnet Category. Den returnerar de delade värdena och beräknar genomsnittspriset för de grupperade posterna.
<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>
I följande exempel visas en LinqDataSource kontroll som är konfigurerad att grupperas efter två kolumner. Egenskapen Key refererar till ett objekt som har två egenskaper och ProductCategoryColor . Objektet som representeras av It har bytt Productsnamn . Det omdöpta Products objektet innehåller en samling enskilda poster i en gruppering och varje instans innehåller alla kolumner från tabellen Produkter.
<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>
I följande exempel visas två ListView kontroller för att visa data från LinqDataSource kontrollen i föregående exempel. En ListView kontroll visar grupperade data och den andra ListView kontrollen visar de enskilda namnen på produkter som tillhör den gruppen. Den kapslade databundna kontrollens DataSource egenskap är inställd på Products, vilket är aliaset It för objektet.
<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>
Kommentarer
Du använder GroupBy egenskapen för att ange vilka egenskaper som ska användas för att konsolidera dataposter som har samma värden. Om du till exempel anger GroupBy egenskapen till Namereturneras alla poster i frågan som har samma Name egenskapsvärde som en enda konsoliderad post.
Du kan tilldela mer än en egenskap till egenskapen genom att GroupBy omsluta alla egenskaper i new funktionen och avgränsa varje egenskap med hjälp av ett kommatecken. Om du till exempel vill gruppera efter egenskaperna Name och sedan Categoryanger du GroupBy egenskapen till new(Name, Category).
Värdena i egenskapen som används för gruppering returneras via en genererad egenskap med namnet Key. Du inkluderar Key egenskapen i egenskapen Select för att hämta de grupperade värdena. Du kan ange Key egenskapen till ett alias med hjälp av nyckelordet As , men du behöver inte använda ett alias. Du kan till exempel ange GroupBy egenskapen till en egenskap med namnet Category. Du kan hämta konsoliderade värden från Category egenskapen genom att ange Select egenskapen till new(Key As ProductCategory).
Du kan komma åt enskilda poster i en gruppering genom att inkludera It egenskapen i egenskapen Select . Egenskapen It innehåller en samling poster som delar ett värde i den grupperade egenskapen. Du kan iterera över egenskapen It för att hämta enskilda poster.
Egenskapen GroupBy används ofta med aggregeringsmetoder. Du kan använda följande aggregeringsmetoder:
Count()Average(Kolumn)Sum(Kolumn)Max(Kolumn)Min(Kolumn)Where(tillstånd)Any()All(tillstånd)
Mer information finns i LinqDataSource Web Server Control Overview and How to: Group and Aggregate Data Using the LinqDataSource Control (Översikt över webbserverkontroll för LinqDataSource) och How to: Group and Aggregate Data Using the LinqDataSource Control (Hur du grupperar och aggregerar data med hjälp av LinqDataSource-kontrollen).