Поскольку это операция, в которой порядок элементов в списке не имеет значения, вы можете легко ускорить это путем распараллеливания (вы можете прочитать об этом здесь ).
Итак, что вы должны сделать, это обработать этот цикл foreach параллельным способом и объединить его с оптимизированным кодом Rufus L. для быстрого результата.
var rows = rows.Where(r =>
(r.MinGaitSpeed == null && r.MaxGaitSpeed != null) ||
(r.MinBergScoreSpeed == null && r.MaxBergScoreSpeed != null) ||
(r.MinBergScoreSpeed == null && r.MaxBergScoreSpeed != null))
Parallel.ForEach(rows, (row) => {
{
if (row.MinGaitSpeed == null)
{
row.MinGaitSpeed = row.MaxGaitSpeed;
row.MaxGaitSpeed = null;
}
if (row.MinTUGTime == null)
{
row.MinTUGTime = row.MaxTUGTime;
row.MaxTUGTime = null;
}
if (row.MinBergScoreSpeed == null)
{
row.MinBergScoreSpeed = row.MaxBergScoreSpeed;
row.MaxBergScoreSpeed = null;
}
}
Обратите внимание, что для этого требуется пространство имен System.Threading.Tasks,вот где класс Parallel
.