LinqDataSource.Select プロパティ

定義

取得したデータに含まれるプロパティと計算値を取得または設定します。Gets or sets the properties and calculated values that are included in the retrieved data.

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 句の作成に使用される文字列。A string that is used to create the Select clause.

次の例では、Select プロパティを、データオブジェクトのプロパティのサブセットに設定する方法を示します。The following example shows how to set the Select property to a subset of properties in the data object.

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

次の例は、データをグループ化するために使用されたプロパティの値を取得し、グループ化されたレコードの平均を取得する方法を示しています。The following example shows how to retrieve values in a property that has been used to group data, and to retrieve the average for the grouped records. Key キーワードには、データをグループ化するために使用されたプロパティが含まれています。The Key keyword contains the property that has been used for grouping data. この例では、ProductCategory プロパティの共有値が Key に含まれています。In this example, Key will contain the shared values from the ProductCategory property.

<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 コントロールはデータオブジェクトからすべてのプロパティ (データ列) を取得します。If you do not set the Select property, the LinqDataSource control retrieves all the properties (data columns) from the data object. オブジェクトからプロパティのサブセットを取得したり、データを取得するときに新しい値を計算したりするには、Select プロパティを使用します。You use the Select property to retrieve a subset of properties from the object or to calculate new values when the data is being retrieved.

取得するプロパティを指定するには、Select プロパティに、返されたデータに含めるプロパティの名前を設定します。You specify which properties to retrieve by setting the Select property to the names of the properties that you want to include in the returned data.

データオブジェクトからプロパティのサブセットを取得すると、LinqDataSource コントロールによって、Select プロパティに指定したプロパティのみを含むクラスが動的に作成されます。If you retrieve a subset of properties from the data object, the LinqDataSource control dynamically creates a class that contains only the properties that you specify in the Select property. データオブジェクトのプロパティではないプロパティを計算する場合は、クラスも動的に作成されます。A class is also created dynamically if you calculate properties that are not properties in the data object. このような場合、クエリから返されるオブジェクトは、TableName プロパティで指定されたクラスのインスタンスではありません。In these cases, the object returned from the query is not an instance of the class that is specified in the TableName property. 代わりに、Select プロパティの new メソッドを使用して、クエリから新しいクラスが返されることを示す必要があります。Instead, you must use the new method in the Select property to indicate that a new class is returned from the query. たとえば、これらのプロパティを含むオブジェクトから FirstNameLastName のプロパティのみを返すには、Select プロパティを new(FirstName, LastName)に設定します。For example, to return only the FirstName and LastName properties from an object that contains more than these properties, set the Select property to new(FirstName, LastName). LinqDataSource コントロールは、new メソッドで指定した新しいクラスを動的に作成します。The LinqDataSource control will dynamically create the new class that you specified in the new method.

As キーワードを使用して、選択した値に別名を割り当てることができます。You can use the As keyword to assign an alias to a selected value. エイリアスを割り当てる場合は、new メソッドにエイリアス化されたプロパティを含める必要があります。If you assign an alias, you must include the aliased properties in the new method. LinqDataSource コントロールの結果にバインドするデータバインドコントロールは、別名によってプロパティを参照する必要があります。Any data-bound control that binds to the results from the LinqDataSource control must refer to the property by the alias. たとえば、Select プロパティを new(Region As SalesRegion, Revenue / 1000 As RevenueThousands)に設定した場合、データバインドコントロールは SalesRegionRevenueThousandsの2つのプロパティにアクセスできます。For example, if you set the Select property to new(Region As SalesRegion, Revenue / 1000 As RevenueThousands), the data-bound control can access two properties, SalesRegion and RevenueThousands.

次の表に示す条件に従って、Select プロパティの new 関数を使用します。You use the new function in the Select property according to the conditions listed in the following table.

選択Select New の使用Use of new Example
1つのプロパティ。Single property. new 必要ありません。new not needed. Select="Category"
複数のプロパティ。Multiple properties. new 必要です。new needed. Select="new(Category, Name)"
エイリアスを持つ1つまたは複数のプロパティ。Single or multiple properties that have an alias. new 必要です。new needed. Select="new(Category As CategoryGroup)"

自動データ変更を有効にし、データオブジェクトのすべてのプロパティを表示しない場合は、Select プロパティを設定しないでください。If you want to enable automatic data modifications, but you do not want to display all the properties from the data object, do not set the Select property. 代わりに、データバインドコントロールを使用して表示を管理します。Instead, manage the display through the data-bound control. DetailsView コントロールまたは GridView コントロールを使用する場合は、AutoGenerateRows または AutoGenerateColumns プロパティも falseに設定する必要があります。When you use the DetailsView control or the GridView control, you must also set the AutoGenerateRows or the AutoGenerateColumns property to false. データバインドコントロールに表示されない値は、ビューステートに格納されます。Any values that are not displayed in the data-bound control are stored in view state. これらは、データ更新の実行時にデータソースに渡されます。They are passed unchanged to the data source when the data update is performed.

クエリでデータをグループ化する場合は、Select プロパティに集計メソッドを含めることができます。When you group data in the query, you can include aggregate methods in the Select property. 次の集計メソッドを使用できます。You can use the following aggregate methods:

  • Count()

  • Average()Average( column )

  • Sum()Sum( column )

  • Max()Max( column )

  • Min()Min( column )

  • Where(条件)Where( condition )

  • Any()

  • All(条件)All( condition )

詳細については、「 LinqDataSource Web サーバーコントロールの概要」および 方法:LinqDataSource コントロールを使用して、データをグループ化および集計します。For more information, see LinqDataSource Web Server Control Overview and How to: Group and Aggregate Data Using the LinqDataSource Control.

データをグループ化する場合、Select プロパティに動的に作成されたプロパティである Key および Itを含めることができます。When you group data, you can include Key and It, which are dynamically created properties, in the Select property. Key プロパティは、データをグループ化するために使用されたプロパティの値を参照します。The Key property refers to the values in the property or properties that were used to group the data. たとえば、Categoryという名前のプロパティでグループ化した場合、Key プロパティには Category プロパティの一意の値がそれぞれ格納されます。For example, if you group by a property named Category, the Key property will contain each unique value in the Category property. It プロパティは、データグループ内の個々のレコードのコレクションを参照します。The It property refers to a collection of individual records in a grouping of data. It プロパティを反復処理して、グループ化操作で統合された個々のレコードを取得できます。You can iterate over the It property to retrieve the individual records that have been consolidated in the grouping operation. たとえば、Categoryという名前のプロパティでグループ化した場合、It プロパティには、Category プロパティで共通の値を共有するすべてのレコードが含まれます。For example, if you group by a property named Category, the It property contains all the individual records that share a common value in the Category property.

データをグループ化するときに、Select プロパティに It キーワードを含める場合は、It キーワードにエイリアスを割り当てる必要があります。If you include the It keyword in the Select property when you group data, you must assign an alias to the It keyword. It にエイリアスがない場合は、LinqDataSource コントロールによって例外がスローされます。The LinqDataSource control will throw an exception if It does not have an alias. Key キーワードにエイリアスを割り当てることはできますが、これは必須ではありません。You can assign an alias to the Key keyword, but this is not required.

適用対象