为什么在将数据源传递给 BindingSource 之前对其调用 .OrderBy 时,我的数据源的类型似乎发生了变化?
Why does the type of my DataSource seem to change when I call .OrderBy on it before passing it to a BindingSource?
我遇到了一个问题,希望有人能帮助我。
我有一个 class,EmployeeList 继承自:
public class MultipleSortableBindingListView<T> : BindingList<T>, IBindingListView
我填写 EmployeeList,并设置一个 BindingSource.DataSource 等于它:
EmployeeListBindingSource.DataSource = lstEmployees.OrderBy(t=>t.LastName)
.ThenBy(t=>t.FirstName);
然后,当我引用DataSource 时,它不再是EmployeeList 类型。
基本上,我需要在 OrderBy
执行后转换回 EmployeeList
。
您可能需要执行以下操作:
var newlist = new EmployeeList(lstEmployees.OrderBy(t=>t.LastName).ThenBy(t=>t.FirstName));
但是,由于 EmployeeList 派生自名称为 MultipleSortableBindingListView
的 class,人们会怀疑它有自己的方法来设置排序顺序,而不必求助于使用 LINQ。
我最近遇到了类似的问题。 (我认为)
当您在 EmployeeList 上调用那些 LINQ 方法 (.OrderBy(...).ThenBy(...)) 时会发生什么,它将 EmployeeList 的类型更改为类似 'IOrderedList' 的类型。
James Curran 为该约定提供了可行的解决方法。
我遇到了一个问题,希望有人能帮助我。
我有一个 class,EmployeeList 继承自:
public class MultipleSortableBindingListView<T> : BindingList<T>, IBindingListView
我填写 EmployeeList,并设置一个 BindingSource.DataSource 等于它:
EmployeeListBindingSource.DataSource = lstEmployees.OrderBy(t=>t.LastName)
.ThenBy(t=>t.FirstName);
然后,当我引用DataSource 时,它不再是EmployeeList 类型。
基本上,我需要在 OrderBy
执行后转换回 EmployeeList
。
您可能需要执行以下操作:
var newlist = new EmployeeList(lstEmployees.OrderBy(t=>t.LastName).ThenBy(t=>t.FirstName));
但是,由于 EmployeeList 派生自名称为 MultipleSortableBindingListView
的 class,人们会怀疑它有自己的方法来设置排序顺序,而不必求助于使用 LINQ。
我最近遇到了类似的问题。 (我认为)
当您在 EmployeeList 上调用那些 LINQ 方法 (.OrderBy(...).ThenBy(...)) 时会发生什么,它将 EmployeeList 的类型更改为类似 'IOrderedList' 的类型。
James Curran 为该约定提供了可行的解决方法。