如何使用Lambda表达式在C#中的字符串列表中添加每个项目

时间:2011-06-08 03:01:05

标签: c# lambda

我在这里找到了这个版本的VB版本,但是我想使用Lambda Expression来获取字符串列表,然后在字符串中的每个项目前面添加一个字符串。

似乎使用ForEach最终按值发送字符串,因此任何更改都会消失。这是我希望工作的代码行。

listOfStrings.ForEach((listItem) => {listItem = listItem.Insert(0,"a");});

4 个答案:

答案 0 :(得分:19)

字符串是不可变的,它们不能“就地”改变。因此,您必须替换列表中不能使用List<T>.ForEach执行的每个条目。在这一点上,你最好只是制作一个新的清单:

listOfStrings = listOfStrings.Select(value => "a" + value).ToList();

答案 1 :(得分:4)

如果您需要修改到位列表,那么显式的for循环是合适的。

for (int index = 0; index < list.Count; index++)
{
     list[index] = // modify away!
}

否则,请将Select(Func<T, TOut> selector)与可选的.ToList().ToArray()一起使用,如六个变量所示。

答案 2 :(得分:3)

List<string> x = new List<string>();
            x.Add("d");

            List<string> res = x.Select(c => "a" + c).ToList();

答案 3 :(得分:1)

您可以制作自己的扩展程序:

public static void ForEachChange<T>(this List<T> List, Func<T, T> Func)
{
    for(int i = 0; i < List.Count; i++)
        List[i] = Func(List[i]);
}

listOfStrings.ForEachChange((listItem) => {return listItem.Insert(0,"a");});

现在可以使用

编辑:
现在正在工作