【发布时间】:2020-02-13 10:10:20
【问题描述】:
在我的应用程序中,我有 version 列表,它是字符串。 Json 结果如下:
[
"v2.9.0",
"v2.10.0",
"v2.11.0",
"v2.12.0",
"v2.13.0",
"v2.14.0",
"v2.15.0",
"v2.16.0",
"v2.1.0",
"v2.2.0"
]
我正在实施升级版本功能。将 currentVersion 升级到 targetVersion。逻辑是例如:如果当前版本是 v2.9.0 它肯定应该升级到 2.10.0 (我们的集合中的技巧部分也有 2.1.0 )
我有一个想法来使用这种方法获取数据来获取最大和最小数字,但我不知道如何获取下一个数字的逻辑。
var str = ReadLine();
var digitArray = str.Select(x => int.Parse(x.ToString())).ToList();
var min = int.Parse(string.Concat<string>(digitArray.OrderBy(x => x).Select(x =>
x.ToString())));
var max = int.Parse(string.Concat<string>(digitArray.OrderByDescending(x =>
x).Select(x => x.ToString())));
我的项目类属性:
public string KubesprayCurrentVersion { get; set; }
public string KubesprayTargetVersion { get; set; }
我正在获取版本列表的 kubespray 类属性:
public string Version { get; set; }
获取版本列表:
[HttpGet]
public async Task<IActionResult> GetKubesprays()
{
var result = await _context.Kubesprays.Select(x => x.Version).ToListAsync();
return Ok(result);
}
我需要使用 kubespray 版本列表升级我的项目 kubeSprayTargetVersion。 为了节省我正在使用的方法:
[HttpPost("createproject")]
public async Task<IActionResult> CreateProject(ProjectForCreationDto
projectForCreationDto)
{
var name = projectForCreationDto.Name.ToLower().Trim();
var currentVerison = projectForCreationDto.KubesprayCurrentVersion.Trim();
var targetVersion = string.Copy(currentVerison);
if (await _repo.ProjectExists(name))
return BadRequest("Project name already exists");
var projectToCreate = new Project { Name = name, KubesprayCurrentVersion =
currentVerison, KubesprayTargetVersion = targetVersion};
await _repo.CreateProject(projectToCreate);
return StatusCode(201);
}
我实际上需要将 kubeSprayTargetVersion 升级到下一个(在我的情况下,它首先是未排序的列表,可能我需要排序)(目前它是相同的 current 和 目标)
类似于 当前 v2.9.0 => v2.10.0
提前致谢。
【问题讨论】:
-
许多其他问题的重复...搜索自然排序
标签: c# linq asp.net-core