@leppie - There is no need to call a ToList() on the IQueryable when attaching it as a data source.
Provided your DataContext has not been disposed of prior to the DataBind method being called ToList is a redundant call.
By default a DataContext uses lazy-loading, so that the data is only fetched from the database when the IQueryable is Enumerated. ToList() performs an Enumeration and does the call, so does DataBind().
So you can do something like this:
using(MyDataContext ctx = new MyDataContext(){
this.MyGridView.DataSource = from something in ctx.Somethings where something.SomeProperty == someValue select something;
this.MyGridView.DataBind();
}
Depending on how your disposing your DataContext determins what to bind to a data source.
You can then either use auto generated columns on the GridView, so that every property in your returned object is turned into a column, or you can write the columns with the designer and set up the binding rules there.