LinqDataSource.GroupBy 屬性
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
取得或設定值,指定用於分組擷取數據的屬性。
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
產生的屬性傳回。 您可以在 Select 屬性中包含 Key
屬性,以擷取群組值。 您可以使用 As
關鍵詞將 Key
屬性設定為別名,但不需要使用別名。 例如,您可以將 GroupBy 屬性設定為名為 Category
的屬性。 您可以將 Select 屬性設定為 new(Key As ProductCategory)
,從 Category
屬性擷取合併的值。
您可以藉由在 Select 屬性中包含 It
屬性,來存取群組中的個別記錄。
It
屬性包含共用群組屬性中值之記錄的集合。 您可以逐一查看 It
屬性來擷取個別記錄。
GroupBy 屬性通常與匯總方法搭配使用。 您可以使用下列匯總方法:
Count()
Average(
數據行)
Sum(
數據行)
Max(
數據行)
Min(
數據行)
Where(
條件)
Any()
All(
條件)
如需詳細資訊,請參閱 LinqDataSource Web 伺服器控制項概觀 和 如何:使用 LinqDataSource 控制件群組和匯總資料。