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 类的实例。 相反,必须使用 new 属性中的 Select 方法来指示从查询返回的新类。 例如,若要从包含多个属性的对象中仅 FirstName 返回 和 LastName 属性,请将 属性 Select 设置为 new(FirstName, LastName)。 控件 LinqDataSource 将动态创建在 方法中指定的 new 新类。

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

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

选择 使用新 示例
单个属性。 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(condition)

  • Any()

  • All(condition)

有关详细信息,请参阅 LinqDataSource Web 服务器控件概述如何:使用 LinqDataSource 控件对数据进行分组和聚合

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

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

适用于