LinqDataSource.Select 属性

定义

获取或设置检索的数据中包含的属性和计算值。

public:
 property System::String ^ Select { System::String ^ get(); void set(System::String ^ value); };
public string Select { get; set; }
member this.Select : string with get, set
Public Property Select As String

属性值

用于创建 Select 子句的字符串。

示例

以下示例演示如何将 Select 属性设置为数据对象中的属性子集。

<asp:LinqDataSource 
    ContextTypeName="ExampleDataContext" 
    TableName="Products" 
    Select="new(Name, Category, Price)"
    ID="LinqDataSource1" 
    runat="server">
</asp:LinqDataSource>
<asp:GridView 
    DataSourceID="LinqDataSource1"
    ID="GridView1" 
    runat="server">
</asp:GridView>
<asp:LinqDataSource 
    ContextTypeName="ExampleDataContext" 
    TableName="Products" 
    Select="new(Name, Category, Price)"
    ID="LinqDataSource1" 
    runat="server">
</asp:LinqDataSource>
<asp:GridView 
    DataSourceID="LinqDataSource1"
    ID="GridView1" 
    runat="server">
</asp:GridView>

以下示例演示如何检索已用于对数据进行分组的属性中的值,以及如何检索分组记录的平均值。 Key 关键字包含用于对数据进行分组的属性。 在此示例中,Key 将包含 ProductCategory 属性中的共享值。

<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>

注解

如果未设置 Select 属性,LinqDataSource 控件将从数据对象检索所有属性(数据列)。 使用 Select 属性从对象中检索属性的子集,或在检索数据时计算新值。

通过将 Select 属性设置为要包含在返回数据中的属性的名称来指定要检索的属性。

如果从数据对象检索属性的子集,LinqDataSource 控件会动态创建一个类,该类仅包含你在 Select 属性中指定的属性。 如果计算不是数据对象中的属性的属性,也会动态创建类。 在这些情况下,从查询返回的对象不是在 TableName 属性中指定的类的实例。 相反,必须使用 Select 属性中的 new 方法来指示从查询返回新类。 例如,若要仅返回包含这些属性以上的对象的 FirstNameLastName 属性,请将 Select 属性设置为 new(FirstName, LastName)LinqDataSource 控件将动态创建在 new 方法中指定的新类。

可以使用 As 关键字将别名分配给所选值。 如果分配别名,则必须在 new 方法中包含别名属性。 绑定到 LinqDataSource 控件结果的任何数据绑定控件都必须通过别名引用该属性。 例如,如果将 Select 属性设置为 new(Region As SalesRegion, Revenue / 1000 As RevenueThousands),则数据绑定控件可以访问两个属性,SalesRegionRevenueThousands

根据下表中列出的条件,在 Select 属性中使用 new 函数。

选择 使用新
单个属性。 不需要 new Select="Category"
多个属性。 需要 new Select="new(Category, Name)"
具有别名的单个或多个属性。 需要 new Select="new(Category As CategoryGroup)"

如果要启用自动数据修改,但不想显示数据对象中的所有属性,请不要设置 Select 属性。 而是通过数据绑定控件管理显示。 使用 DetailsView 控件或 GridView 控件时,还必须将 AutoGenerateRowsAutoGenerateColumns 属性设置为 false。 未显示在数据绑定控件中的任何值都存储在视图状态中。 执行数据更新时,它们将保持不变传递给数据源。

在查询中对数据进行分组时,可以在 Select 属性中包含聚合方法。 可以使用以下聚合方法:

  • Count()

  • Average( )

  • Sum( )

  • Max( )

  • Min( )

  • Where( 条件)

  • Any()

  • All( 条件)

有关详细信息,请参阅 LinqDataSource Web Server Control OverviewHow to: Group and Aggregate Data Using the LinqDataSource Control.

对数据进行分组时,可以在 Select 属性中包含动态创建的 KeyItKey 属性是指用于对数据进行分组的属性或属性中的值。 例如,如果按名为 Category的属性进行分组,Key 属性将包含 Category 属性中的每个唯一值。 It 属性是指数据分组中的单个记录的集合。 可以循环访问 It 属性,以检索分组操作中合并的单个记录。 例如,如果按名为 Category的属性进行分组,则 It 属性包含共享 Category 属性中公共值的所有单个记录。

如果在对数据进行分组时 Select 属性中包含 It 关键字,则必须为 It 关键字分配别名。 如果 It 没有别名,LinqDataSource 控件将引发异常。 可以将别名分配给 Key 关键字,但这不是必需的。

适用于