Как заменить определенную строку в списке строки типа с помощью linq?

Привет всем У меня есть список строк типа с некоторыми элементами. Я хочу заменить некоторые элементы, используя linq, как я могу это сделать? мой ниже код работает нормально, но я хочу сделать это в одной строке кода, используя силу linq.

Вот мой код:

List<string> listcolumns = columns.ToList();//Array to list

if (listcolumns.Contains("HowToReplace") && listcolumns.Contains("HowTo Replace"))
{
    int index = 0;
    index = listcolumns.IndexOf("HowToReplace");
    if (index > 0)
    {
        listcolumns.RemoveAt(index);
        listcolumns.Insert(index, "HowTo Replace");
    }
    index = listcolumns.IndexOf("HowToReplace");
    if (index > 0)
    {
        listcolumns.RemoveAt(index);
        listcolumns.Insert(index, "HowTo Replace");
    }
    columns = listcolumns.ToArray<string>();//List to array
}

Ответ 1

С Linq:

listColumns.Select<string,string>(s => s == "HowToReplace" ? "HowTo Replace" : s).ToArray();

Без Linq:

 for (int i=0; i<listColumns.Length; i++) 
    if (ListColumns[i] == "HowToreplace") ListColumns[i] ="HowTo Replace");

Ответ 2

List<String> lstString = new List<string> { "find", "find1","find", "find2" };

//all 'find' will be replaced with 'replace'
lstString.Select(str=>str.Replace("find","replace"));

Ответ 3

static class LinqExtensions
{
    public static IEnumerable<T> Replace<T>(this IEnumerable<T> items, Predicate<T> condition, Func<T, T> replaceAction)
    {
        return items.Select(item => condition(item) ? replaceAction(item) : item);
    }
}

Тогда вы можете использовать его так

var names = new[] { "Hasan", "Jack", "Josh" };
names = names.Replace(x => x == "Hasan", _ => "Khan").ToArray();