public async Task<bool> RunImportData(bool isRun) { initImport(); bool successflag = true; List<AbstractImportProcess> datalist = new(); datalist.AddRange(_importProcess.OrderBy(data => data.DataType) .ThenBy(data => data.Order == null).ThenBy(data => data.Order)); foreach (var data in datalist) { data.InitProcess(); bool ValidateResult = await data.ValidateDataProcess(); if (!ValidateResult) { successflag = false; } if (isRun) { bool importResult = await data.ImportProcess(); if (!importResult) { successflag = false; } } } if (!successflag) { ExportErrorLog(isRun ? "importError" : "testRunError"); } migrateLogger.Information(successflag ? "success Import" : "fail Import"); return successflag; } 优化这段代码
时间: 2024-02-10 19:17:11 浏览: 154
AsyncTask小练习
这段代码可以进行如下优化:
1. 将初始化、排序、遍历等操作合并到 LINQ 方法链中,可以使代码更加简洁易读。
2. 使用 LINQ 的 `All` 函数可以简化循环判断的逻辑。
3. 将导入和测试运行分离,使得代码更加清晰易懂。
具体代码如下:
```
public async Task<bool> RunImportData(bool isRun)
{
var sortedData = _importProcess.OrderBy(data => data.DataType)
.ThenBy(data => data.Order == null)
.ThenBy(data => data.Order)
.Select(data =>
{
data.InitProcess();
return data;
});
if (!sortedData.All(async data =>
{
bool validateResult = await data.ValidateDataProcess();
if (!validateResult)
{
return false;
}
if (isRun)
{
bool importResult = await data.ImportProcess();
if (!importResult)
{
return false;
}
}
return true;
}))
{
ExportErrorLog(isRun ? "importError" : "testRunError");
return false;
}
migrateLogger.Information(isRun ? "success Import" : "success Test Run");
return true;
}
```
需要注意的是,为了将初始化和遍历操作合并到 LINQ 方法链中,我们使用了 `Select` 函数来对每个 `AbstractImportProcess` 进行初始化操作,并返回其本身。
阅读全文