LinqDataSource.Select 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取或设置检索的数据中包含的属性和计算值。
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
方法来指示从查询返回新类。 例如,若要仅返回包含这些属性以上的对象的 FirstName
和 LastName
属性,请将 Select 属性设置为 new(FirstName, LastName)
。
LinqDataSource 控件将动态创建在 new
方法中指定的新类。
可以使用 As
关键字将别名分配给所选值。 如果分配别名,则必须在 new
方法中包含别名属性。 绑定到 LinqDataSource 控件结果的任何数据绑定控件都必须通过别名引用该属性。 例如,如果将 Select 属性设置为 new(Region As SalesRegion, Revenue / 1000 As RevenueThousands)
,则数据绑定控件可以访问两个属性,SalesRegion
和 RevenueThousands
。
根据下表中列出的条件,在 Select 属性中使用 new
函数。
选择 | 使用新 | 例 |
---|---|---|
单个属性。 | 不需要 new 。 |
Select="Category" |
多个属性。 | 需要 new 。 |
Select="new(Category, Name)" |
具有别名的单个或多个属性。 | 需要 new 。 |
Select="new(Category As CategoryGroup)" |
如果要启用自动数据修改,但不想显示数据对象中的所有属性,请不要设置 Select 属性。 而是通过数据绑定控件管理显示。 使用 DetailsView 控件或 GridView 控件时,还必须将 AutoGenerateRows 或 AutoGenerateColumns 属性设置为 false
。 未显示在数据绑定控件中的任何值都存储在视图状态中。 执行数据更新时,它们将保持不变传递给数据源。
在查询中对数据进行分组时,可以在 Select 属性中包含聚合方法。 可以使用以下聚合方法:
Count()
Average(
列)
Sum(
列)
Max(
列)
Min(
列)
Where(
条件)
Any()
All(
条件)
有关详细信息,请参阅 LinqDataSource Web Server Control Overview 和 How to: Group and Aggregate Data Using the LinqDataSource Control.
对数据进行分组时,可以在 Select 属性中包含动态创建的 Key
和 It
。
Key
属性是指用于对数据进行分组的属性或属性中的值。 例如,如果按名为 Category
的属性进行分组,Key
属性将包含 Category
属性中的每个唯一值。
It
属性是指数据分组中的单个记录的集合。 可以循环访问 It
属性,以检索分组操作中合并的单个记录。 例如,如果按名为 Category
的属性进行分组,则 It
属性包含共享 Category
属性中公共值的所有单个记录。
如果在对数据进行分组时 Select 属性中包含 It
关键字,则必须为 It
关键字分配别名。 如果 It
没有别名,LinqDataSource 控件将引发异常。 可以将别名分配给 Key
关键字,但这不是必需的。