Linq: Как запросить объекты от набора, пока сумма не достигает определенного значения

Мне кажется, что нам нужно больше спецификации проблемы.

s = some Assignment;

не определяется относительно того, какое присвоение это. Если присвоение

s = "" + i + "";

тогда должно быть выделено, новое жало.

, но если бы это

s = some Constant;

, только с укажет на ячейку памяти констант, и таким образом первая версия была бы большей эффективной памятью.

Кажется мной мало глупый волноваться собирающийся много оптимизации для цикла для интерпретируемого Ленга, по моему скромному мнению.

13
задан JaredPar 30 October 2009 в 21:25
поделиться

2 ответа

Вот два быстрых лайнера.

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; });
20
ответ дан 1 December 2019 в 22:39
поделиться

Вы просто создаете переменную для хранения суммы, а затем добавляете к ней, поскольку каждый элемент в списке проверяется с помощью предложения where :

int sum = 0;
from product in list where (sum += product.Quantity) < 8 select product
1
ответ дан 1 December 2019 в 22:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: