【发布时间】:2011-07-26 13:36:08
【问题描述】:
编辑:我自己解决了这个问题 - 显然不会工作,因为对 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 只会影响渲染的输出,而不会对表格进行物理重新排序,因此代码的第二部分不会产生我需要的结果。我应该使用 DataView 还是我只是偏离轨道...
【问题讨论】:
-
dtEvents 和 datatable 引用的是同一个对象吗?