Я недавно боролся с этой же проблемой;кажется, что интерфейс IQueryable не предоставляет достаточно информации для DataViewGrid, чтобы знать, как сортировать данные автоматически;поэтому вам нужно либо упаковать свою коллекцию из источника Entity, используя то, что она может использовать, либо сделать то, что я сделал, и обработать функции сортировки вручную:
private void myDataGridView_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
DataGridViewColumn column = myDataGridView.Columns[e.ColumnIndex];
_isSortAscending = (_sortColumn == null || _isSortAscending == false);
string direction = _isSortAscending ? "ASC" : "DESC";
myBindingSource.DataSource = _context.MyEntities.OrderBy(
string.Format("it.{0} {1}", column.DataPropertyName, direction)).ToList();
if (_sortColumn != null) _sortColumn.HeaderCell.SortGlyphDirection = SortOrder.None;
column.HeaderCell.SortGlyphDirection = _isSortAscending ? SortOrder.Ascending : SortOrder.Descending;
_sortColumn = column;
}
Надеюсь, это поможет.