LINQ to SQL translates LINQ queries to SQL for execution on a database. The results are strongly typed IEnumerable. Because these objects are ordinary common language runtime (CLR) objects, ordinary object data binding can be used to display the results. On the other hand, sorting and change operations (inserts, updates, and deletes) require additional steps.
For example, to provide a DataSource for a DataGridView that can be sorted using the DataGridView's built in sorting capabilities, you can not assisign a LINQ TO SQL query directly to the DataGridView's DataSource.
Instead, assign a LINQ TO SQL query to a BindingSource and then assign the BindingSource to a DataGridView.
Visual Basic Example
Friend Shared Function CreditCardTypesList(ByVal activeFilter As Boolean, ByVal titleFilter As String) As BindingSource
Dim newBindingSource As New BindingSource()
newBindingSource.DataSource = _
From e In DB.VYDal.CreditCardTypes _
Where e.Active = activeFilter And SqlMethods.Like(e.Title, titleFilter & "%") _
Order By e.Title _
Select e
Return newBindingSource
End Function
Bind the Binding Source to a DataGridView:
Private Sub LoadGridView()
entityGridView.DataSource = DB.CreditCardTypesList(True, titleFilterTextBox.Text)
End Sub
C# Example
internal static BindingSource CreditCardTypesList(bool activeFilter, string titleFilter)
{
BindingSource bs = new BindingSource();
bs.DataSource = from e in DB.VYDal.CreditCardTypes
where e.Active == activeFilter & SqlMethods.Like(e.Title, titleFilter + "%")
orderby e.Title
select e;
return bs;
}
Bind the BindingSource to a DataGridView:
private void LoadGridView()
{
entityGridView.DataSource = DB.CreditCardTypesList(true, titleFilterTextBox.Text);
}