我在c#中有一个函数,它与踏步异步运行,并将内部编号添加到列表中。所有的内部版本号以不同的顺序排列,但是我想对它们进行排序,以获得最高的内部版本号和最低的最后版本号。我尝试使用。
.sort()
和
.Reverse();
但是我仍然没有以正确的顺序得到它们。
这是我的调试中的图片,向您展示了它们如何准确地变酸,但顺序不正确。
谢谢。
这是创建列表的方法。
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);
}