代码之家  ›  专栏  ›  技术社区  ›  user568551

为什么在将数据源传递给BindingSource之前,我调用OrderBy时,数据源的类型似乎发生了变化?

  •  1
  • user568551  · 技术社区  · 9 年前

    我有个问题,希望有人能帮我。

    public class MultipleSortableBindingListView<T> : BindingList<T>, IBindingListView
    

    我填写EmployeeList,并设置BindingSource。与之相等的数据源:

    EmployeeListBindingSource.DataSource = lstEmployees.OrderBy(t=>t.LastName)
       .ThenBy(t=>t.FirstName);
    

    然后,当我引用数据源时,它不再是EmployeeList类型。

    基本上,我需要回到 EmployeeList 之后 OrderBy

    2 回复  |  直到 9 年前
        1
  •  2
  •   Igor    9 年前

    您可能需要执行以下操作:

    var newlist = new EmployeeList(lstEmployees.OrderBy(t=>t.LastName).ThenBy(t=>t.FirstName));
    

    然而,由于EmployeeList派生自一个名为 MultipleSortableBindingListView 人们可能会怀疑它有自己的方法来设置排序顺序,而不必使用LINQ。

        2
  •  1
  •   Joseph Marotta    9 年前

    当您调用这些LINQ方法时会发生什么情况(.OrderBy(…)。然后在EmployeeList上通过(…)将EmployeeList的类型更改为类似“IOrderedList”的类型。

    詹姆斯·科伦为该公约提供了一个可行的解决办法。