Я думаю, что дополнительная переменная - ваша лучшая ставка. В этом простом примере
Dim a = {6, 4, 2, 5, 3, 1}.OrderBy(Function(i) i Mod 2).ThenBy(Function(i) i)
Console.WriteLine(a.First())
Console.WriteLine(a.Last())
a
будет перечислено дважды.
Вы можете предотвратить это, вызвав ToList()
в исходной переменной, чтобы немедленно перечислить ее
Dim a = {6, 4, 2, 5, 3, 1}.OrderBy(Function(i) i Mod 2).ThenBy(Function(i) i).ToList()
Console.WriteLine(a.First())
Console.WriteLine(a.Last())
или с использованием второй переменной
Dim a = {6, 4, 2, 5, 3, 1}.OrderBy(Function(i) i Mod 2).ThenBy(Function(i) i)
Dim b = a.ToList()
Console.WriteLine(b.First())
Console.WriteLine(b.Last())
Конечно, при второй переменной повторный доступ к a
позже может привести к его повторному перечислению.
Если это отнимает много времени чтобы запросить, есть некоторые соображения, которые вы должны сделать в своем приложении, о которых я не знаю достаточно.