通过


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 的任何数据绑定控件都必须通过别名引用属性。 例如,如果将属性new(Region As SalesRegion, Revenue / 1000 As RevenueThousands)设置为Select,则数据绑定控件可以访问两个属性,SalesRegion并且RevenueThousands

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

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

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

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

  • Count()

  • Average( )

  • Sum( )

  • Max( )

  • Min( )

  • Where(condition

  • Any()

  • All(condition

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

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

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

适用于