Duration (Pacific Standard Time):
To (Pacific Standard Time):
Impact:
User Action:
.NET Framework Class Library

LinqDataSource Class

Enables the use of Language-Integrated Query (LINQ) in an ASP.NET Web page through markup text to retrieve and modify data from a data object.

Namespace:  System.Web.UI.WebControls
Assembly:  System.Web.Extensions (in System.Web.Extensions.dll)
<ToolboxBitmapAttribute(GetType(LinqDataSource), "LinqDataSource.bmp")> _
Public Class LinqDataSource _
	Inherits ContextDataSource _
	Implements IDynamicDataSource, IDataSource
<asp:LinqDataSource />

The LinqDataSource type exposes the following members.

  Name Description
Public method LinqDataSource Initializes a new instance of the LinqDataSource class.
Top
  Name Description
Protected property Adapter Gets the browser-specific adapter for the control. (Inherited from Control.)
Public property AppRelativeTemplateSourceDirectory Gets or sets the application-relative virtual directory of the Page or UserControl object that contains this control. (Inherited from Control.)
Public property AutoGenerateOrderByClause Gets or sets a value that indicates whether the LinqDataSource control dynamically creates an Order By clause based on values in the OrderByParameters collection.
Public property AutoGenerateWhereClause Gets or sets a value that indicates whether the LinqDataSource control dynamically creates a Where clause based on values defined in the WhereParameters collection.
Public property AutoPage Gets or sets a value that indicates whether the LinqDataSource control supports navigation through sections of the data at run time.
Public property AutoSort Gets or sets a value that indicates whether the LinqDataSource control supports sorting the data at run time.
Public property BindingContainer Infrastructure. Gets the control that contains this control's data binding. (Inherited from Control.)
Protected property ChildControlsCreated Gets a value that indicates whether the server control's child controls have been created. (Inherited from Control.)
Public property ClientID Gets the server control identifier generated by ASP.NET. (Inherited from DataSourceControl.)
Public property ClientIDMode This property is not used for data source controls. (Inherited from DataSourceControl.)
Protected property ClientIDSeparator Gets a character value representing the separator character used in the ClientID property. (Inherited from Control.)
Protected property Context Gets the HttpContext object associated with the server control for the current Web request. (Inherited from Control.)
Public property ContextTypeName Gets or sets the name of the type that contains the property whose value has the data that you want to retrieve. (Overrides ContextDataSource.ContextTypeName.)
Public property Controls Gets a ControlCollection object that represents the child controls for a specified server control in the UI hierarchy. (Inherited from DataSourceControl.)
Public property DataItemContainer Gets a reference to the naming container if the naming container implements IDataItemContainer. (Inherited from Control.)
Public property DataKeysContainer Gets a reference to the naming container if the naming container implements IDataKeysControl. (Inherited from Control.)
Public property DeleteParameters This property is not used by the LinqDataSource class.
Protected property DesignMode Gets a value indicating whether a control is being used on a design surface. (Inherited from Control.)
Public property EnableDelete Gets or sets a value that indicates whether data records can be deleted through the LinqDataSource control.
Public property EnableInsert Gets or sets a value that indicates whether data records can be inserted through the LinqDataSource control.
Public property EnableObjectTracking Gets or sets the value that indicates whether changes to the data context object are tracked.
Public property EnableTheming Gets a value indicating whether this control supports themes. (Inherited from DataSourceControl.)
Public property EnableUpdate Gets or sets a value that indicates whether data records can be updated through the LinqDataSource control.
Public property EnableViewState Gets or sets a value indicating whether the server control persists its view state, and the view state of any child controls it contains, to the requesting client. (Inherited from Control.)
Protected property EntitySetName Gets or sets the name of the property or field in the data source object that represents a data collection. (Inherited from ContextDataSource.)
Public property EntityTypeName Gets or sets the name of the type that is created for Insert, Delete, and Update operations. (Inherited from ContextDataSource.)
Protected property Events Gets a list of event handler delegates for the control. This property is read-only. (Inherited from Control.)
Public property GroupBy Gets or sets a value that specifies which properties are used for grouping the retrieved data.
Public property GroupByParameters Gets the collection of parameters that are used to create the Group By clause.
Protected property HasChildViewState Gets a value indicating whether the current server control's child controls have any saved view-state settings. (Inherited from Control.)
Public property ID Gets or sets the programmatic identifier assigned to the server control. (Inherited from Control.)
Protected property IdSeparator Infrastructure. Gets the character used to separate control identifiers. (Inherited from Control.)
Public property InsertParameters Gets the collection of parameters that are used during an insert operation.
Protected property IsChildControlStateCleared Gets a value indicating whether controls contained within this control have control state. (Inherited from Control.)
Protected property IsTrackingViewState Gets a value that indicates whether the server control is saving changes to its view state. (Inherited from Control.)
Protected property IsViewStateEnabled Gets a value indicating whether view state is enabled for this control. (Inherited from Control.)
Protected property LoadViewStateByID Gets a value indicating whether the control participates in loading its view state by ID instead of index. (Inherited from Control.)
Public property NamingContainer Gets a reference to the server control's naming container, which creates a unique namespace for differentiating between server controls with the same Control.ID property value. (Inherited from Control.)
Public property OrderBy Gets or sets a value that specifies which fields are used for ordering the retrieved data.
Public property OrderByParameters Gets the collection of parameters that are used to create the Order By clause.
Public property OrderGroupsBy Gets or sets the fields that are used for ordering grouped data.
Public property OrderGroupsByParameters Gets the collection of parameters that are used to create the Order Groups By clause.
Public property Page Gets a reference to the Page instance that contains the server control. (Inherited from Control.)
Public property Parent Gets a reference to the server control's parent control in the page control hierarchy. (Inherited from Control.)
Public property RenderingCompatibility Gets a value that specifies the ASP.NET version that rendered HTML will be compatible with. (Inherited from Control.)
Public property Select Gets or sets the properties and calculated values that are included in the retrieved data.
Public property SelectParameters Gets the collection of parameters that are used during a data-retrieval operation.
Public property Site Gets information about the container that hosts the current control when rendered on a design surface. (Inherited from Control.)
Public property SkinID Gets the skin to apply to the DataSourceControl control. (Inherited from DataSourceControl.)
Public property StoreOriginalValuesInViewState Gets or sets a value that indicates whether the data from the data source should be stored in view state to make sure that the data has not been changed by another process before it is updated or deleted.
Public property TableName Gets or sets the name of the property or field in the data context class that represents a data collection.
Public property TemplateControl Gets or sets a reference to the template that contains this control. (Inherited from Control.)
Public property TemplateSourceDirectory Gets the virtual directory of the Page or UserControl that contains the current server control. (Inherited from Control.)
Public property UniqueID Gets the unique, hierarchically qualified identifier for the server control. (Inherited from Control.)
Public property UpdateParameters This collection is not used by the LinqDataSource class.
Public property ValidateRequestMode Gets or sets a value that indicates whether the control checks client input from the browser for potentially dangerous values. (Inherited from Control.)
Protected property ViewState Gets a dictionary of state information that allows you to save and restore the view state of a server control across multiple requests for the same page. (Inherited from Control.)
Protected property ViewStateIgnoresCase Gets a value that indicates whether the StateBag object is case-insensitive. (Inherited from Control.)
Public property ViewStateMode Gets or sets the view-state mode of this control. (Inherited from Control.)
Public property Visible Gets or sets a value indicating whether the control is visually displayed. (Inherited from DataSourceControl.)
Public property Where Gets or sets a value that specifies what conditions must be true for a record to be included in the retrieved data.
Public property WhereParameters Gets the collection of parameters that is used to create the Where clause.
Top
  Name Description
Protected method AddedControl Called after a child control is added to the Controls collection of the Control object. (Inherited from Control.)
Protected method AddParsedSubObject Notifies the server control that an element, either XML or HTML, was parsed, and adds the element to the server control's ControlCollection object. (Inherited from Control.)
Public method ApplyStyleSheetSkin Applies the style properties that are defined in the page style sheet to the control. (Inherited from DataSourceControl.)
Protected method BeginRenderTracing Begins design-time tracing of rendering data. (Inherited from Control.)
Protected method BuildProfileTree Infrastructure. Gathers information about the server control and delivers it to the Trace property to be displayed when tracing is enabled for the page. (Inherited from Control.)
Protected method ClearCachedClientID Infrastructure. Sets the cached ClientID value to null. (Inherited from Control.)
Protected method ClearChildControlState Deletes the control-state information for the server control's child controls. (Inherited from Control.)
Protected method ClearChildState Deletes the view-state and control-state information for all the server control's child controls. (Inherited from Control.)
Protected method ClearChildViewState Deletes the view-state information for all the server control's child controls. (Inherited from Control.)
Protected method ClearEffectiveClientIDMode Infrastructure. Sets the ClientIDMode property of the current control instance and of any child controls to Inherit. (Inherited from Control.)
Protected method CreateChildControls Called by the ASP.NET page framework to notify server controls that use composition-based implementation to create any child controls they contain in preparation for posting back or rendering. (Inherited from Control.)
Protected method CreateControlCollection Creates a collection to store child controls. (Inherited from DataSourceControl.)
Protected method CreateQueryableView Returns a queryable view. (Overrides QueryableDataSource.CreateQueryableView().)
Protected method CreateView Creates a new instance of the LinqDataSourceView class that is associated with this control.
Public method DataBind() Binds a data source to the invoked server control and all its child controls. (Inherited from Control.)
Protected method DataBind(Boolean) Binds a data source to the invoked server control and all its child controls with an option to raise the DataBinding event. (Inherited from Control.)
Protected method DataBindChildren Binds a data source to the server control's child controls. (Inherited from Control.)
Public method Delete Performs a delete operation.
Public method Dispose Enables a server control to perform final clean up before it is released from memory. (Inherited from Control.)
Protected method EndRenderTracing Ends design-time tracing of rendering data. (Inherited from Control.)
Protected method EnsureChildControls Determines whether the server control contains child controls. If it does not, it creates child controls. (Inherited from Control.)
Protected method EnsureID Creates an identifier for controls that do not have an identifier assigned. (Inherited from Control.)
Public method Equals(Object) Determines whether the specified object is equal to the current object. (Inherited from Object.)
Protected method Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.)
Public method FindControl(String) Searches the current naming container for a server control with the specified id parameter. (Inherited from DataSourceControl.)
Protected method FindControl(String, Int32) Infrastructure. Searches the current naming container for a server control with the specified id and an integer, specified in the pathOffset parameter, which aids in the search. You should not override this version of the FindControl method. (Inherited from Control.)
Public method Focus Sets input focus to the control. (Inherited from DataSourceControl.)
Protected method GetDesignModeState Infrastructure. Gets design-time data for a control. (Inherited from Control.)
Public method GetHashCode Serves as the default hash function. (Inherited from Object.)
Public method GetRouteUrl(Object) Gets the URL that corresponds to a set of route parameters. (Inherited from Control.)
Public method GetRouteUrl(RouteValueDictionary) Gets the URL that corresponds to a set of route parameters. (Inherited from Control.)
Public method GetRouteUrl(String, Object) Gets the URL that corresponds to a set of route parameters and a route name. (Inherited from Control.)
Public method GetRouteUrl(String, RouteValueDictionary) Gets the URL that corresponds to a set of route parameters and a route name. (Inherited from Control.)
Public method GetType Gets the Type of the current instance. (Inherited from Object.)
Public method GetUniqueIDRelativeTo Returns the prefixed portion of the UniqueID property of the specified control. (Inherited from Control.)
Protected method GetView Gets the data source view that is associated with the QueryableDataSource object. (Inherited from QueryableDataSource.)
Protected method GetViewNames Gets a collection of names that represent views that are associated with the QueryableDataSource control. (Inherited from QueryableDataSource.)
Public method HasControls Determines if the server control contains any child controls. (Inherited from DataSourceControl.)
Protected method HasEvents Returns a value indicating whether events are registered for the control or any child controls. (Inherited from Control.)
Public method Insert Performs an insert operation.
Protected method IsLiteralContent Infrastructure. Determines if the server control holds only literal content. (Inherited from Control.)
Protected method LoadControlState Restores control-state information from a previous page request that was saved by the SaveControlState method. (Inherited from Control.)
Protected method LoadViewState Loads the state of the values in the QueryableDataSource control that must be persisted. (Inherited from QueryableDataSource.)
Protected method MapPathSecure Retrieves the physical path that a virtual path, either absolute or relative, maps to. (Inherited from Control.)
Protected method MemberwiseClone Creates a shallow copy of the current Object. (Inherited from Object.)
Protected method OnBubbleEvent Determines whether the event for the server control is passed up the page's UI server control hierarchy. (Inherited from Control.)
Protected method OnDataBinding Raises the DataBinding event. (Inherited from Control.)
Protected method OnInit Initializes the LinqDataSource object. (Overrides QueryableDataSource.OnInit(EventArgs).)
Protected method OnLoad Raises the Load event. (Inherited from Control.)
Protected method OnPreRender Raises the PreRender event. (Inherited from Control.)
Protected method OnUnload Raises the Unload event. (Overrides Control.OnUnload(EventArgs).)
Protected method OpenFile Gets a Stream used to read a file. (Inherited from Control.)
Protected method RaiseBubbleEvent Assigns any sources of the event and its information to the control's parent. (Inherited from Control.)
Protected method RaiseDataSourceChangedEvent Raises the DataSourceChanged event. (Inherited from DataSourceControl.)
Public method RaiseViewChanged Calls the OnDataSourceViewChanged method of the DataSourceView class. (Inherited from QueryableDataSource.)
Protected method RemovedControl Called after a child control is removed from the Controls collection of the Control object. (Inherited from Control.)
Protected method Render Sends server control content to a provided HtmlTextWriter object, which writes the content to be rendered on the client. (Inherited from Control.)
Protected method RenderChildren Outputs the content of a server control's children to a provided HtmlTextWriter object, which writes the content to be rendered on the client. (Inherited from Control.)
Public method RenderControl(HtmlTextWriter) Outputs server control content to a provided HtmlTextWriter object and stores tracing information about the control if tracing is enabled. (Inherited from DataSourceControl.)
Protected method RenderControl(HtmlTextWriter, ControlAdapter) Outputs server control content to a provided HtmlTextWriter object using a provided ControlAdapter object. (Inherited from Control.)
Protected method ResolveAdapter Gets the control adapter responsible for rendering the specified control. (Inherited from Control.)
Public method ResolveClientUrl Gets a URL that can be used by the browser. (Inherited from Control.)
Public method ResolveUrl Converts a URL into one that is usable on the requesting client. (Inherited from Control.)
Protected method SaveControlState Saves any server control state changes that have occurred since the time the page was posted back to the server. (Inherited from Control.)
Protected method SaveViewState Saves the current view state of the QueryableDataSource control. (Inherited from QueryableDataSource.)
Protected method SetDesignModeState Sets design-time data for a control. (Inherited from Control.)
Public method SetRenderMethodDelegate Infrastructure. Assigns an event handler delegate to render the server control and its content into its parent control. (Inherited from Control.)
Public method SetTraceData(Object, Object) Sets trace data for design-time tracing of rendering data, using the trace data key and the trace data value. (Inherited from Control.)
Public method SetTraceData(Object, Object, Object) Sets trace data for design-time tracing of rendering data, using the traced object, the trace data key, and the trace data value. (Inherited from Control.)
Public method ToString Returns a string that represents the current object. (Inherited from Object.)
Protected method TrackViewState Tracks view-state changes of the QueryableDataSource control so that the changes can be stored in the StateBag object for the control. (Inherited from QueryableDataSource.)
Public method Update Performs an update operation.
Protected method UpdateParameterVales Updates the parameter values that have changed since the previous request. (Inherited from QueryableDataSource.)
Top
  Name Description
Public event ContextCreated Occurs after an instance of the context type object is created.
Public event ContextCreating Occurs before an instance of the context type object is created.
Public event ContextDisposing Occurs before disposing the context type object.
Public event DataBinding Occurs when the server control binds to a data source. (Inherited from Control.)
Public event Deleted Occurs when a delete operation has finished.
Public event Deleting Occurs before a delete operation.
Public event Disposed Occurs when a server control is released from memory, which is the last stage of the server control lifecycle when an ASP.NET page is requested. (Inherited from Control.)
Public event Init Occurs when the server control is initialized, which is the first step in its lifecycle. (Inherited from Control.)
Public event Inserted Occurs when an insert operation has finished.
Public event Inserting Occurs before an insert operation.
Public event Load Occurs when the server control is loaded into the Page object. (Inherited from Control.)
Public event PreRender Occurs after the Control object is loaded but prior to rendering. (Inherited from Control.)
Public event QueryCreated Occurs when a query is added to or removed from a data source control. (Inherited from QueryableDataSource.)
Public event Selected Occurs when a data retrieval operation has finished.
Public event Selecting Occurs before a data-retrieval operation.
Public event Unload Occurs when the server control is unloaded from memory. (Inherited from Control.)
Public event Updated Occurs when an update operation has finished.
Public event Updating Occurs before an update operation.
Top
  Name Description
Public Extension Method ExpandDynamicWhereParameters Expands dynamic filters into Where parameters that are usable by the data source. (Defined by DynamicDataExtensions.)
Public Extension Method FindDataSourceControl Returns the data source that is associated with the data control for the specified control. (Defined by DynamicDataExtensions.)
Public Extension Method FindFieldTemplate Returns the field template for the specified column in the specified control's naming container. (Defined by DynamicDataExtensions.)
Public Extension Method FindMetaTable Returns the metatable object for the containing data control. (Defined by DynamicDataExtensions.)
Public Extension Method GetDefaultValues Gets the collection of the default values for the specified data source. (Defined by DynamicDataExtensions.)
Public Extension Method GetMetaTable Gets the metadata for a table in the specified data source object. (Defined by DynamicDataExtensions.)
Public Extension Method GetTable Returns the MetaTable object that is associated with the specified data source control. (Defined by DynamicDataExtensions.)
Public Extension Method LoadWith<TEntity> Sets the System.Data.Linq.DataLoadOptions value of a LINQ-to-SQL data source to force all the foreign-key entities to be loaded. (Defined by DynamicDataExtensions.)
Public Extension Method LoadWithForeignKeys Sets the System.Data.Linq.DataLoadOptions value of a LINQ-to-SQL data source to force all the foreign-key entities to be loaded. (Defined by DynamicDataExtensions.)
Public Extension Method TryGetMetaTable Determines whether table metadata is available. (Defined by DynamicDataExtensions.)
Top
  Name Description
Explicit interface implemetation Private property IControlBuilderAccessor.ControlBuilder For a description of this member, see IControlBuilderAccessor.ControlBuilder. (Inherited from Control.)
Explicit interface implemetation Private method IControlDesignerAccessor.GetDesignModeState For a description of this member, see IControlDesignerAccessor.GetDesignModeState. (Inherited from Control.)
Explicit interface implemetation Private method IControlDesignerAccessor.SetDesignModeState For a description of this member, see IControlDesignerAccessor.SetDesignModeState. (Inherited from Control.)
Explicit interface implemetation Private method IControlDesignerAccessor.SetOwnerControl Infrastructure. For a description of this member, see IControlDesignerAccessor.SetOwnerControl. (Inherited from Control.)
Explicit interface implemetation Private property IControlDesignerAccessor.UserData For a description of this member, see IControlDesignerAccessor.UserData. (Inherited from Control.)
Explicit interface implemetation Private property IDataBindingsAccessor.DataBindings For a description of this member, see IDataBindingsAccessor.DataBindings. (Inherited from Control.)
Explicit interface implemetation Private property IDataBindingsAccessor.HasDataBindings For a description of this member, see IDataBindingsAccessor.HasDataBindings. (Inherited from Control.)
Explicit interface implemetation Private event IDataSource.DataSourceChanged Infrastructure. Occurs when a data source control has changed in a way that affects data-bound controls. (Inherited from DataSourceControl.)
Explicit interface implemetation Private method IDataSource.GetView Infrastructure. Gets the named DataSourceView object associated with the DataSourceControl control. Some data source controls support only one view, while others support more than one. (Inherited from DataSourceControl.)
Explicit interface implemetation Private method IDataSource.GetViewNames Infrastructure. Gets a collection of names, representing the list of DataSourceView objects associated with the DataSourceControl control. (Inherited from DataSourceControl.)
Explicit interface implemetation Private property IDynamicDataSource.ContextType For a description of this member, see IDynamicDataSource.
Explicit interface implemetation Private property IDynamicDataSource.EntitySetName For a description of this member, see IDynamicDataSource.
Explicit interface implemetation Private event IDynamicDataSource.Exception For a description of this member, see IDynamicDataSource.
Explicit interface implemetation Private property IExpressionsAccessor.Expressions For a description of this member, see IExpressionsAccessor.Expressions. (Inherited from Control.)
Explicit interface implemetation Private property IExpressionsAccessor.HasExpressions For a description of this member, see IExpressionsAccessor.HasExpressions. (Inherited from Control.)
Explicit interface implemetation Private property IListSource.ContainsListCollection Infrastructure. Indicates whether the data source control is associated with one or more lists of data. (Inherited from DataSourceControl.)
Explicit interface implemetation Private method IListSource.GetList Infrastructure. Gets a list of data source controls that can be used as sources of lists of data. (Inherited from DataSourceControl.)
Explicit interface implemetation Private method IParserAccessor.AddParsedSubObject For a description of this member, see IParserAccessor.AddParsedSubObject. (Inherited from Control.)
Top

In this topic:

Introduction

Language-Integrated Query (LINQ) is a query syntax that defines a set of query operators that enable traversal, filter, and projection operations to be expressed in a declarative way in any .NET-based programming language. The data object can be an in-memory data collection or an object that represents data from a database. You can retrieve or modify the data without having to write SQL commands for each operation.

The LinqDataSource control enables you to use LINQ in an ASP.NET Web page by setting properties in markup text. The LinqDataSource control uses LINQ to SQL to automatically generate the data commands. For more information about LINQ to SQL, see LINQ to SQL [LINQ to SQL].

When you are retrieving data from an in-memory data collection, you set the ContextTypeName property to the class that contains the data collection. You set the TableName property to the property or field that returns the data collection. For example, you might have a class named Person that contains a property named FavoriteCities that returns an array of string values. In that case, you set the ContextTypeName property to Person and set the TableName property to FavoriteCities.

When you are querying a database, you must first create entity classes that represent the database and its tables. You can use the Object Relational Designer or the SqlMetal.exe utility to generate these classes. You then set the ContextTypeName property to the class that represents the database and set the TableName property to the property that represents the database table.

Order of Operations

The LinqDataSource control applies data operations in the following order:

  1. Where (specify which data records to return).

  2. Order By (sort).

  3. Group By (aggregate data records that share values).

  4. Order Groups By (sort grouped data).

  5. Select (specify which fields or properties to return).

  6. Auto-sort (sort data records by a property that the user has selected).

  7. Auto-page (retrieve a subset of data records that were selected by the user).

You can add conditions to the Where property to filter the data records that are returned from a query. If the Where property is not set, the LinqDataSource control retrieves every record from the data object.

Ordering Data

You use the OrderBy property to specify the names of properties from the returned data to sort by.

Note Note

When you use the LinqDataSource control with SQL Server 2000 or SQL Server Compact 3.5 and the AutoPage property is set to true, you must provide a value in the OrderBy property. By default, the AutoPage property is true. If you assign a value to the Select property, you must also include all identity columns in the list of properties that is returned in the query.

Grouping Data

You use the GroupBy property to specify which properties are used to consolidate data records that have the same values. When you group data, you can include Key and It, which are dynamically created properties, in the Select property. The Key property refers to the values in the property or properties that were used to group the data. For example, if you group by a property named Category, the Key property will contain all unique values in the Category property. The It property refers to a collection of individual records in a grouping of data. You can iterate over the It property to retrieve the individual records that have been consolidated in the grouping operation. 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.

You use the OrderGroupsBy property to specify the properties to use for sorting the grouped data. When you group data, the OrderBy property specifies how the individual records within the grouped data are sorted.

By default, the LinqDataSource control retrieves values for all the properties from a data object. You use the Select property to specify which properties to return if you want to work with a subset of available properties. The Select operation is applied after the Where, Order By, and Group By operations. Therefore, if you create an aliased name in a Select clause, the alias is not available in the other clauses.

Data Modifications

You can specify whether data modifications are enabled by using the EnableDelete, EnableInsert, and EnableUpdate properties. The user interface for modifying data from a LinqDataSource control is typically provided through a data-bound control, such as a DetailsView control. In addition to setting EnableDelete, EnableInsert, or EnableUpdate to true, the following conditions are required to enable automatic data modifications:

You can restrict which properties are displayed in a data-bound control in two ways. You can either set the Select property to a subset of properties, or you can define the fields for a data-bound control by adding DataControlField controls. However, if you set the Select property, it means that automatic update, insert, and delete operations cannot be enabled. If you want to enable automatic data modifications while you work with a subset of available properties, do not set the Select property. Instead, retrieve all properties from the data object and manage which ones are displayed by using the data-bound control. When you use the DetailsView control or the GridView control, you must also set the AutoGenerateRows or AutoGenerateColumns properties to false. This prevents the data-bound control from automatically including buttons for editing and deleting the data. 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.

Evaluating Values at Run Time

If you have to evaluate values at run time for ordering, filtering, or grouping values, you can add parameters to the WhereParameters, GroupByParameters, OrderGroupsByParameters, or OrderByParameters collections.

If you want to specify default values, you can add parameters to the InsertParameters collection.

If you want to examine or modify values before the data operation is executed, you can handle the Deleting, Inserting, Selecting, or Updating events. You can also handle these events in order to cancel the data operation or to examine validation errors that occurred when you set properties in the data class based on user input.

To examine values after the data operation has finished, handle the Deleted, Inserted, Selected, or Updated events.

Working with Stored Procedures

You use the LinqDataSource control to retrieve data from a stored procedure by creating an event handler for the Selecting event. In the event handler, you call the method in the data context class that represents the stored procedure and set the result to the Result property of the LinqDataSourceSelectEventArgs object. If you want to enable automatic update, insert, and delete operations for the data, the type that is returned from the method must match the type that is specified in the TableName property. For more information about creating data context methods, see How to: Create DataContext Methods Mapped to Stored Procedures and Functions (O/R Designer).

Declarative Syntax

<asp:LinqDataSource
    AutoGenerateOrderByClause="True|False"
    AutoGenerateWhereClause="True|False"
    AutoPage="True|False"
    AutoSort="True|False"
    ContextTypeName="string"
    EnableDelete="True|False"
    EnableInsert="True|False"
    EnableTheming="True|False"
    EnableUpdate="True|False"
    EnableViewState="True|False"
    GroupBy="string"
    ID="string"
    OnContextCreated="ContextCreated event handler"
    OnContextCreating="ContextCreating event handler"
    OnContextDisposing="ContextDisposing event handler"
    OnDataBinding="DataBinding event handler"
    OnDeleted="Deleted event handler"
    OnDeleting="Deleting event handler"
    OnDisposed="Disposed event handler"
    OnInit="Init event handler"
    OnInserted="Inserted event handler"
    OnInserting="Inserting event handler"
    OnLoad="Load event handler"
    OnPreRender="PreRender event handler"
    OnSelected="Selected event handler"
    OnSelecting="Selecting event handler"
    OnUnload="Unload event handler"
    OnUpdated="Updated event handler"
    OnUpdating="Updating event handler"
    OrderBy="string"
    runat="server"
    Select="string"
    SkinID="string"
    StoreOriginalValuesInViewState="True|False"
    TableName="string"
    Visible="True|False"
    Where="string"
>
        <GroupByParameters />
        <InsertParameters />
        <OrderByParameters />
        <SelectParameters />
        <WhereParameters />
</asp:LinqDataSource>

The following example shows a LinqDataSource control that retrieves data from an entity class named Products. The entity class could have been generated by using the O/R Designer or the SqlMetal.exe utility. The Where property is set to return only records that have a value in the Price property greater than 50. A GridView control is bound to the LinqDataSource control to display the data.

<asp:LinqDataSource 
    ContextTypeName="ExampleDataContext" 
    TableName="Products" 
    Where="Price > 50"
    ID="LinqDataSource1" 
    runat="server">
</asp:LinqDataSource>
<asp:GridView 
    DataSourceID="LinqDataSource1"
    ID="GridView1" 
    runat="server">
</asp:GridView>

The following example shows a LinqDataSource control that enables users to update, delete, and insert records in the data source. A DetailsView control is bound to the LinqDataSource control and enables users to see and modify the data. Notice that no SQL commands are required in order to select, update, delete, or insert the records.

<asp:LinqDataSource 
    ContextTypeName="ExampleDataContext" 
    TableName="Products" 
    EnableUpdate="true"
    EnableInsert="true"
    EnableDelete="true"
    ID="LinqDataSource1" 
    runat="server">
</asp:LinqDataSource>
<asp:DetailsView 
    DataKeyNames="ProductID"
    AutoGenerateEditButton="true"
    AutoGenerateDeleteButton="true"
    AutoGenerateInsertButton="true"
    AllowPaging="true"
    DataSourceID="LinqDataSource1"
    ID="GridView1" 
    runat="server">
</asp:DetailsView>

The following example shows an event handler for the Selecting event that sets the data object based on a value in the Web page.

Partial Class Default3
    Inherits System.Web.UI.Page

    Dim citiesArray() As String = _
    { _
        "Atlanta", _
        "Charlotte", _
        "Denver", _
        "New York", _
        "San Francisco" _
    }


    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    End Sub 


    Protected Sub LinqDataSource_Selecting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.LinqDataSourceSelectEventArgs) Handles LinqDataSource1.Selecting
        Dim cities = From city In citiesArray _
                     Where city > "B" _
                     Select city
        e.Result = cities
        ' Or we could set e.Result = citiesArray to return all rows. 
    End Sub 

End Class

The following example shows a LinqDataSource control that is configured to group by two columns. The Key property references an object that has two properties, ProductCategory and Color. The object represented by It is renamed (aliased) to Products. The renamed Products object contains a collection of the individual records in a grouping. Each instance will contain all the columns from the Products table.

<asp:LinqDataSource 
  ContextTypeName="ExampleDataContext" 
  TableName="Products" 
  GroupBy="new(ProductCategory, Color)"
  Select="new(Key,
          It As Products,
          Max(ListPrice) As MaxListPrice, 
          Min(ListPrice) As MinListPrice)"
  ID="LinqDataSource1" 
  runat="server">
</asp:LinqDataSource>

The following example shows two ListView controls that display the data from the LinqDataSource control in the previous example. One ListView control displays the grouped data, and the other ListView control displays the individual names of products that belong to that group. The nested data-bound control's DataSource property is set to Products, which is the alias for the It object.

<asp:ListView 
   DataSourceID="LinqDataSource1" 
   ID="ListView1" runat="server">

   <LayoutTemplate>
     <table id="Table1" 
         style="background-color:Teal;color:White" 
         runat="server" 
         class="Layout">

       <thead>
         <tr>
           <th><b>Product Category</b></th>
           <th><b>Color</b></th>
           <th><b>Highest Price</b></th>
           <th><b>Lowest Price</b></th>
         </tr>
       </thead>
       <tr runat="server" id="itemPlaceholder">
       </tr>

     </table>
   </LayoutTemplate>

   <ItemTemplate>
     <tr>
       <td><%# Eval("key.ProductCategory") %></td>
       <td><%# Eval("key.Color") %></td>
       <td><%# Eval("MaxListPrice") %></td>
       <td><%# Eval("MinListPrice") %></td>
     </tr>
     <tr>

       <td colspan="4" style="width:100%;background-color:White;color:Black">
         <asp:ListView 
           DataSource='<%# Eval("Products") %>' 
           runat="server" 
           ID="ListView2">

           <LayoutTemplate>
             <div runat="server" id="itemPlaceholder" />
           </LayoutTemplate>

           <ItemTemplate>
             <%# Eval("ProductName") %><br />
           </ItemTemplate>

         </asp:ListView> 
       </td>
     </tr>
   </ItemTemplate>
 </asp:ListView>

.NET Framework

Supported in: 4.5.1, 4.5, 4, 3.5

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.