如何按先进先出的方式对DataColumns进行排序

时间:2016-04-13 13:50:33

标签: c# algorithm sorting datatable datacolumn

我不确定问题是否正确,但这就是我想要做的事情。

我有一个导入/导出工具,可以使用看起来像这样的Matrix电子表格模板在TestRail中导入/导出测试用例(AP =适用,NA =不适用):

Sections        Test1 | Test2 | Test3 | Test4 | Test5
Section 1         NA  |  AP   |  AP   |  AP   |  NA
Section 2         AP  |  NA   |  AP   |  AP   |  AP
Section 3         AP  |  AP   |  AP   |  NA   |  AP

因此,在TestRail中,它看起来像这样:

  • 第1节
    • 的Test2
    • Test3的
    • TEST4
  • 第2节
    • 测试1
    • Test3的
    • TEST4
    • TEST5
  • 第3节
    • 测试1
    • 的Test2
    • Test3的
    • TEST5

但是当我从TestRail导出时,列与Import:

的顺序不同
Sections        Test2 | Test3 | Test4 | Test1 | Test5
Section 1         AP  |  AP   |  AP   |       |  
Section 2             |  AP   |  AP   |  AP   |  AP
Section 3         AP  |  AP   |       |  AP   |  AP

这是我到目前为止使用DataTable并尝试检测以前的测试用例的代码......但经过一些测试后,它根本无法准确/正常工作...特别是有大量的章节和测试:

String previousTC = String.Empty;

// For each Test Case
// Adds column to the Matrix table for each new Test Cases
foreach (var tcase in currentCases)
{
    if (!dtMatrix.Columns.Contains(tcase.title))
    {
        // Adds a new Column if TestCases does not exist
        dtMatrix.Columns.Add(tcase.title, typeof(string));
    }
    else
    {
        if (dtMatrix.Columns.Contains(previousTC))
        {
            // Gets the position of the previous TestCase 
            // in order to put the new one right after
            var previous = dtMatrix.Columns.IndexOf(previousTC);
            var current = dtMatrix.Columns.IndexOf(tcase.title);
            if (previous >= current)
            {
                dtMatrix.Columns[current].SetOrdinal(previous);
            }
        }
    }
    previousTC = tcase.title;
}

请注意,Test1至5仅用于解释我的问题,可以是任何内容,而不是按字母顺序排列。

所以我需要一些帮助来找到能解决我的排序顺序问题的正确算法。

非常感谢!

编辑: 我想也许,基于TestRail的套件,我可以找到合并它们的方法..然后跟踪每个合并的测试用例列。

0 个答案:

没有答案