Как вычесть значение свойства из списка по условию - PullRequest
0 голосов
/ 28 ноября 2018

В моем приложении на C # мне нужно вычесть значение свойства из огромного списка (HoList? Прямо сейчас я делаю это, не уверен, что так ли это?

int value1 =2;
HoList.Select(r => r.Count - value1).ToList();

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

используя ваш существующий код, исправьте это

int value1 =2;
HoList = HoList.Select(r => r.Count - value1).ToList();

или если вам нужно сохранить оригинал

int value1 =2;
var newList = HoList.Select(r => r.Count - value1).ToList();

Дело в том, что Select не изменяет список, он создаетновый список

0 голосов
/ 28 ноября 2018

В вашем вопросе вы принимаете HoList, который является неким типом со свойством Count.Я могу это увидеть, посмотрев на оператор Select.

Когда вы звоните Select, вы выбираете то, что хотите вернуть, и в своем примере вы возвращаете Count - value1.Это, скорее всего, результат int.Select просто возвращает IEnumerable<int>, а затем ToList() превращает IEnumerable<int> в List<int>.Вы также никому не назначаете этот список.

Если вы хотите изменить исходный список, вы можете сделать что-то вроде этого:

HoList.ForEach(r => r.Count -= value1);

Если это большой список, вы можете использовать параллелизмдля чего-то вроде этого также:

HoList.AsParallel().ForAll(r => r.Count -= value1);
...