更新:尽管我已经得到了所需的结果,但是当第二个函数访问数据表时,值仍然是相同的 它是一个具有两个函数的不同类的顺序程序。首先排序和第二个替换功能。所以它应该排序值和其他函数应该能够检索排序表,但是当它检索数据表时,它会给出未排序的表。更新:结果未转移到原始数据集。使用C#对数据集中的行排序
我已经使用acceptchanges(),但它也给出了相同的结果。
程序试图根据所需字段对表进行排序,结果存储在排序表变量中。我试图将其复制到原始的i-e sourceTables,但它不工作,并且正在添加另一行而不是更新[如下所示]。我试图复制整个表,但它不起作用,通过添加行,它没有给出所需的结果。我使用了不同的方法,但我没有得到所需的结果。
List<DataTable> sourceTables = context.GetDataByTable(sourceTable.StringValue);
List<DataTable> targetTables = context.GetDataByTable(targetTable.StringValue, sourceTables.Count);
string orderDesc= orderField.StringValue + " DESC";
for (int i = 0; i < sourceTables.Count; i++)
{
DataView dv = sourceTables[i].DefaultView;
if (orderDirection.StringValue == OrderDirectionAsc)
{
// for Sorting in Ascending Order
dv.Sort = orderField.StringValue;
}
else
{
// for Sorting in Descending Order
dv.Sort = orderDesc;
}
DataTable sortedTable = dv.ToTable();
DataTable dttableNew = sortedTable.Clone();
//sourceTables[i] = sortedTable.Copy();
//targetTables[i] = dv.ToTable();
//targetTables[i] = sortedTable.Copy();
// foreach (DataRow dr in sortedTable.Rows)
//// targetTables[i].Rows.Add(dr.ItemArray);
//}
for (int j = 0; j < sourceTables[i].Rows.Count; j++)
{
if (sourceTable.GetValue().ToString() == targetTable.GetValue().ToString())
{
foreach (DataRow dr in sortedTable.Rows)
{
targetTables[i].Rows.Add(dr.ItemArray);
}
else
{
foreach (DataRow dr in sortedTable.Rows)
{
targetTables[i].Rows.Add(dr.ItemArray);
}
// targetTables[i] = sortedTable.Copy(); does not work
//foreach (DataRow drtableOld in sortedTable.Rows)
//{
// targetTables[i].ImportRow(drtableOld);
//}
,而不是替换第一值是增加更多的行
任何帮助,将不胜感激
为什么你需要复制的排序视图什么吗? – Plutonix
我想排序表。由于排序功能在数据表上不起作用。所以在排序视图后,我试图用视图替换原始数据。 –
如果我使用sourceTables [i] = dv.ToTable()该cahnges只是本地 –