Мне кажется, что нам нужно больше спецификации проблемы.
s = some Assignment;
не определяется относительно того, какое присвоение это. Если присвоение
s = "" + i + "";
тогда должно быть выделено, новое жало.
, но если бы это
s = some Constant;
, только с укажет на ячейку памяти констант, и таким образом первая версия была бы большей эффективной памятью.
Кажется мной мало глупый волноваться собирающийся много оптимизации для цикла для интерпретируемого Ленга, по моему скромному мнению.
Вот два быстрых лайнера.
var sum = 0;
var query = col.Where(x => { var temp = sum; sum += x.Quantity; return temp < 500; });
Замените 500 константой или переменной по вашему выбору.
РЕДАКТИРОВАТЬ
Вот более эффективное решение mquander
var sum = 0;
var query = col.TakeWhile(x => { var temp = sum; sum += x.Quantity; return temp < 500; });
Вы просто создаете переменную для хранения суммы, а затем добавляете к ней, поскольку каждый элемент в списке проверяется с помощью предложения where
:
int sum = 0;
from product in list where (sum += product.Quantity) < 8 select product