大家好我有一些带有一些项目的字符串列表。我想用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
}
答案 0 :(得分:21)
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");
答案 1 :(得分:7)
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();
答案 2 :(得分:6)
List<String> lstString = new List<string> { "find", "find1","find", "find2" };
//all 'find' will be replaced with 'replace'
lstString.Select(str=>str.Replace("find","replace"));