我在排序以错误顺序合并的数据集时遇到问题。这是代码:
// Adding new data to DataSet ds:
DataSet dsNew = messageSearcher.Seek(_CriteriaCollection.ToString(), mb.ConvertedClassId, mb.ConnectionString); // Recieving a set of ID that are new and need to be added to ds
ds.Merge(dsNew);
// The data set is now sorted wrongly. Therefore want to sort it based on "MME_ID"
var table = ds.Tables[0];
var view = new DataView(table);
var newRows = view.DeepCopy();
newRows.Sort = "MME_ID DESC"; // <--- This does not sort the ResultSet... Why?
table.Rows.Clear();
foreach (var row in newRows)
table.Rows.Add(row);
ds.AcceptChanges();
我做错了什么?
答案 0 :(得分:0)
视图只是一种视图,DataView.Sort
不会对基础DataTable
进行排序。我建议使用Linq-To-DataSet
代替更易读和可维护的内容:
var table = ds.Tables[0].AsEnumerable()
.OrderByDescending(row => row.Field<int>("MME_ID"))
.CopyToDataTable();
请注意,我假设MME_ID
是int
列。如果它的字符串类型不同,则抛出异常。然后,您必须更改Field<T>
以使用正确的类型,或者 - 如果您想以数字方式而不是按字典顺序排序 - 请使用int
将其解析为int.Parse
。