Если вы хотите использовать LINQ, вы можете использовать Select, ToArray и String (символ []) конструктор, как это:
var result = query.ToList();
foreach (var x in result)
{
x.SomeProperty =
new string(x.SomeProperty
.Select(c => (c == 'X' || ... || c == ' ') ? '_' : c)
.ToArray());
}
Заметьте, что LINQ не предназначен, чтобы быть используется для создания побочных эффектов, но для создания новых перечислений из существующих счетчиков. Итак, здесь лучше провести цикл foreach
.
Но почему бы не просто цепочку Замены?
var result = query.ToList();
foreach (var x in result)
{
x.SomeProperty = x.SomeProperty
.Replace('X', '_')
.Replace('Y', '_')
.Replace('Z', '_')
.Replace(' ', '_');
}
Или вы пытаетесь заменить один символ с последовательностью символов? Затем используйте перегрузку string.replace, который принимает две строки:
var result = query.ToList();
foreach (var x in result)
{
x.SomeProperty = x.SomeProperty.Replace(" ", "ABC");
}
Это именно то, что мне нужно. Спасибо – 2010-09-14 14:49:44
Это немного злоупотребляет методом 'Select', хотя! – LukeH
Это работает, если первый или последний символ - «X», «Y» или «Z»? Например. «XBC» возвращает «_BC» и «ABX» возвращает «AB_»? Или «XYZ» возвращает «___»? –