DataSet合并+排序不起作用

时间:2014-02-10 08:54:25

标签: c# sorting dataset dataview

我在排序以错误顺序合并的数据集时遇到问题。这是代码:

// 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();

我做错了什么?

1 个答案:

答案 0 :(得分:0)

视图只是一种视图,DataView.Sort不会对基础DataTable进行排序。我建议使用Linq-To-DataSet代替更易读和可维护的内容:

var table = ds.Tables[0].AsEnumerable()
    .OrderByDescending(row => row.Field<int>("MME_ID"))
    .CopyToDataTable();

请注意,我假设MME_IDint列。如果它的字符串类型不同,则抛出异常。然后,您必须更改Field<T>以使用正确的类型,或者 - 如果您想以数字方式而不是按字典顺序排序 - 请使用int将其解析为int.Parse