编辑:解决这个自己 - 显然不会作为排序dataTable不排序底层数据 - 从表创建dataView,工作正常。排序和更新数据表不产生预期的结果
我有一个数据表,我排序,然后迭代通过删除一列中的重复值,但输出不符合预期。
数据表结构:
infoRow["Title"]
infoRow["QuickLink"]
infoRow["Description"]
infoRow["Date"]
infoRow["MonthName"]
我选这样的,它工作得很好,并产生每月递增顺序排序表:
dataTable = dataTable.DefaultView.ToTable(true);
dataTable.DefaultView.Sort = "Date asc";
排序后,我使用下面的代码将每一行与前一个进行比较,如果MonthName值相同,则用空字符串替换它:
string prevMonthName = "";
foreach (DataRow row in dtEvents.Rows)
{
string strMonthName = row["MonthName"].ToString();
if (strMonthName == prevMonthName)
{
row["MonthName"] = "";
row.AcceptChanges();
}
prevMonthName = strMonthName;
}
所以,我遇到的问题是,即使在排序后运行MonthName循环,它似乎是针对未排序的数据运行。这就像DefaultView.Sort只影响呈现的输出,而没有物理重新排序表,因此代码的第二部分不会产生我需要的结果。如果我也许是使用数据视图或我只是方式偏离了轨道......
dtEvents和datatable是否引用同一个对象? – 2011-03-31 02:26:41