Очевидно, Somelist
- это последовательность Tables
, где каждый Table
имеет последовательность Columns
.
Мне кажется, что столбцы этих таблиц не влияют на GetColumnConstraints()
.Почему вы вызываете эту функцию один раз для каждого столбца?Разве не было бы эффективнее, если бы вы вызывали его только один раз?
var columnConstraints = await GetColumnConstraintsAsync();
var result = tables.Select(table => new Table
{
Columns = table.Select(column => new Column
{
Constraints = columnConstraints,
...
})
})
.ToList();
Возможно, вы упростили задачу и перечислимая таблица и столбец влияют на извлекаемые ограничения, например, потому что онииспользуются в качестве входных переменных.Может быть, если вы вызываете функцию во второй раз, вы получаете различные ограничения?
Если вам действительно нужно получить ограничения для столбца на таблицу, то сначала дождитесь получения ограничений перед созданием таблицы:
var result = tables.Select(table =>
{
var columnTasks = table.Select(column => GetColumnContraintsAsync(...)).ToArray();
// all tasks are running now, wait until all are completed:
await Task.WhenAll(columnTasks);
// fetch the result from every task:
var columnTaskResults = columnTasks.Select(columnTask => columnTask.Result).ToList();
// create a Table with these results and return it:
return new Table
{
Columns = columnTaskResults,
};
})
.ToList();