C# List изменение значений списка по условию

Дано: код на языке C Sharp (C#) (в частности ASP.Net Core 2).
Задача: изменить значения некоторых элементов списка List<T> по определенному условию.

Вариант решения


Пусть есть следующий класс:

public class SomeStructure
{
 public int IntStructureID { get; set; }
 public int IntStructureType { get; set; }
 public string strName { get; set; }
 public string strStructureColor { get; set; }
}

Пусть есть список с экземплярами данного класса, который был заполнен каким-либо способом (например, из базы):

List<SomeStructure> lstSomeStructures = new List<SomeStructure>();

Пример добавления одного элемента:

SomeStructure St = new SomeStructure();
St.intStructureID = 1;
St.IntStructureType = 4;
St.strName = "Какой-то раздел";
lstSomeStructures.Add(St);

Пусть нам нужно установить значение "red" в свойство strStructureColor для всех элементов списка, у которых IntStructureType равно 4.
Сделать это довольно легко при помощи лямба-выражения.

Вариант реализации: (можно записать в одну строку)

lstSomeStructures
.FindAll(s => s.IntStructureType == 4)
.ForEach(x => x.strStructureColor = "red");

Т.е. замена произойдет непосредственно в элементах текущего списка без необходимости копировать их в другой список.


(с) Ella S.
Если Вам понравилась статья, пожалуйста, поставьте лайк, сделайте репост или оставьте комментарий. Если у Вас есть какие-либо замечания, также пишите комментарии.

5 комментариев:

  1. Если нужно несколько условий (действий), то пример:
    lstSomeStructures
    .FindAll(s => s.IntStructureType == 4 & s.intStructureID > 1)
    .ForEach(x => { x.strStructureColor = "red"; x.IntStructureType = 1; });

    ОтветитьУдалить
  2. Спасибо! Как раз та информация, которую я искал ) Как раз нужна была массовая замена в списке одного значения на другое.

    ОтветитьУдалить
  3. Спасибо! Очень пригодилось.

    ОтветитьУдалить