如何将ObservableCollection OrderBy()传递给DataSet
我有一个ObservableCollection类,如下所示:
public ObservableCollection GetModules() { DataSet ds = StoreDbDataSet.ReadDataSet(); ObservableCollection modules = new ObservableCollection(); foreach (DataRow moduleRow in ds.Tables["Modules"].Rows) { modules.Add(new Module(moduleRow["ModelNumber"].ToString(), moduleRow["ParamName"].ToString(), (UInt16)moduleRow["ParamValue"], (UInt16)moduleRow["DefaultValue"], (UInt16)moduleRow["MaxValue"], (UInt16)moduleRow["MinValue"], (uint)moduleRow["Address"])); } return modules; }
所以在我的用法中,我这样做了:
private ObservableCollection myModulesList; private void RefreshModulesByOrder() { myModulesList = new ObservableCollection(sdb.GetModules().OrderBy(mod => mod.Address)); ModulesView = CollectionViewSource.GetDefaultView(myModulesList); ModulesView.Filter = obj => { var Module = (Module)obj; return SelectedProduct != null && SelectedProduct.ModelNumber == Module.ModelNumber; }; }
现在由于某种原因,我需要将GetModules()
更改为DataSet类型,如:
public DataSet GetModules() { DataSet ds = StoreDbDataSet.ReadDataSet(); ObservableCollection modules = new ObservableCollection(); foreach (DataRow moduleRow in ds.Tables["Modules"].Rows) { modules.Add(new Module(moduleRow["ModelNumber"].ToString(), moduleRow["ParamName"].ToString(), (UInt16)moduleRow["ParamValue"], (UInt16)moduleRow["DefaultValue"], (UInt16)moduleRow["MaxValue"], (UInt16)moduleRow["MinValue"], (uint)moduleRow["Address"])); } return StoreDbDataSet.ReadDataSet(); }
所以我更改了使用代码,如:
private DataSet _ds; private void RefreshModules() { _ds = sdb.GetModules(); ModulesView = new ListCollectionView(_ds.Tables["Modules"].DefaultView) { Filter = obj => { var Module = obj as DataRowView; return SelectedProduct != null && SelectedProduct.ModelNumber == Module["ModelNumber"].ToString(); } }; }
那么我应该如何修复代码来实现ModulesView
By Order ? 提前致谢!