如何在C#中对数字字符串列表进行排序

时间:2018-07-31 11:03:38

标签: c# list

我在c#中有一个函数,它与踏步异步运行,并将内部编号添加到列表中。所有的内部版本号以不同的顺序排列,但是我想对它们进行排序,以获得最高的内部版本号和最低的最后版本号。我尝试使用。

  

.sort()

  

.Reverse();

但是我仍然没有以正确的顺序得到它们。

这是我的调试中的图片,向您展示了它们如何准确地变酸,但顺序不正确。

Image of list of build numbers

谢谢。

这是创建列表的方法。

private async Task<IEnumerable<string>> RetrieveBuildNumbers(string project, string iteration)
{
    ServicePointManager.DefaultConnectionLimit = 100;
    List<string> dataToReturn = new List<string>();
    IEnumerable<IBuild> builds = GetBuilds(project);
    //We do "-4" to sort only on the last 4 digits in iteration name "23.0"
    string buildVersion = iteration.Substring(iteration.Length - 4);

    var tasks = new List<Task>(200);
    var lockOfDeath = new object();
    foreach (IBuild build in builds)
    {
        tasks.Add(Task.Factory.StartNew(async () => {

            if (build.BuildNumber.Contains(buildVersion.ToLower()))
            {
                ITestRuns testRuns = TS.Runs.TSRuns.GetTestRunByBuildUriWithDetails(project, build.Uri, includeRunDetails: true);
                IEnumerable<ITestRun> sortTestRuns = testRuns.Value.Where(p => p.Build.Id == build.Id);

                foreach (ITestRun testRun in sortTestRuns)
                {
                    lock (lockOfDeath)
                    {
                        // Add only the same build number once
                        if (dataToReturn.FirstOrDefault(p => p == build.BuildNumber) == null)
                        {
                            dataToReturn.Add(build.BuildNumber);
                        }
                    }
                }
            }
        }));
    }

    Task.WaitAll(tasks.ToArray());

    //List<string> 
    dataToReturn.Sort();
    dataToReturn.Reverse();
    return dataToReturn.OrderByDescending(p => p);
}

0 个答案:

没有答案