LinqDataSource.GroupBy Propriété
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Obtient ou définit une valeur qui spécifie les propriétés utilisées pour regrouper les données récupérées.
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
Valeur de propriété
Chaîne utilisée pour créer la clause Group By.
Exemples
L’exemple suivant montre un contrôle LinqDataSource qui regroupe les données retournées par une propriété nommée Category
. Elle retourne les valeurs partagées et calcule le prix moyen des enregistrements groupés.
<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>
L’exemple suivant montre un contrôle LinqDataSource configuré pour regrouper par deux colonnes. La propriété Key
fait référence à un objet qui a deux propriétés, ProductCategory
et Color
. L’objet représenté par It
est renommé Products
. L’objet Products
renommé contient une collection des enregistrements individuels dans un regroupement, et chaque instance contient toutes les colonnes de la table 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>
L’exemple suivant montre deux contrôles ListView pour afficher les données du contrôle LinqDataSource dans l’exemple précédent. Un contrôle ListView affiche les données groupées et l’autre contrôle ListView affiche les noms individuels des produits appartenant à ce groupe. La propriété DataSource du contrôle imbriqué lié aux données est définie sur Products
, qui est l’alias de l’objet 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>
Remarques
Vous utilisez la propriété GroupBy pour spécifier les propriétés utilisées pour consolider les enregistrements de données qui ont les mêmes valeurs. Par exemple, si vous définissez la propriété GroupBy sur Name
, tous les enregistrements de la requête qui ont la même valeur de propriété Name
sont retournés en tant qu’enregistrement consolidé unique.
Vous pouvez affecter plusieurs propriétés à la propriété GroupBy en plaçant toutes les propriétés dans la fonction new
et en séparant chaque propriété à l’aide d’une virgule. Par exemple, pour regrouper par les propriétés Name
, puis Category
, définissez la propriété GroupBy sur new(Name, Category)
.
Les valeurs de la propriété utilisées pour le regroupement sont retournées par le biais d’une propriété générée nommée Key
. Vous incluez la propriété Key
dans la propriété Select pour récupérer les valeurs groupées. Vous pouvez définir la propriété Key
sur un alias à l’aide du mot clé As
, mais vous n’êtes pas obligé d’utiliser un alias. Par exemple, vous pouvez définir la propriété GroupBy sur une propriété nommée Category
. Vous pouvez récupérer les valeurs consolidées de la propriété Category
en définissant la propriété Select sur new(Key As ProductCategory)
.
Vous pouvez accéder aux enregistrements individuels d’un regroupement en incluant la propriété It
dans la propriété Select. La propriété It
contient une collection d’enregistrements qui partagent une valeur dans la propriété groupée. Vous pouvez itérer sur la propriété It
pour récupérer les enregistrements individuels.
La propriété GroupBy est souvent utilisée avec des méthodes d’agrégation. Vous pouvez utiliser les méthodes d’agrégation suivantes :
Count()
Average(
)
de colonneSum(
)
de colonneMax(
)
de colonneMin(
)
de colonneWhere(
condition)
Any()
All(
condition)
Pour plus d’informations, consultez Vue d’ensemble du contrôle serveur web LinqDataSource et Guide pratique pour regrouper et agréger des données à l’aide du contrôle LinqDataSource.