使用LINQ条件更新集合中的字符串

时间:2016-11-08 15:01:07

标签: c# .net linq

我想更新List中的所有字符串,这些字符串不以#34; http://"开头以" http://"

开头

在foreach中我会做这样的事情:

url = url.StartsWith("http://") ? url : url.Insert(0, "http://");

3 个答案:

答案 0 :(得分:9)

只需使用常规for循环 - 这是修改集合的最简单方法:

for (int i = 0; i < list.Count; i++)
{
    string url = list[i];
    if (!url.StartsWith("http://"))
    {
        list[i] = "http://" + url;
    }
}

如果您乐意创建集合,那很简单:

var modifiedList = list.Select(url => url.StartsWith("http://") ? url : "http://" + url)
                       .ToList();

答案 1 :(得分:2)

yourlist.Where(_ => !_.StartsWith("http://")).ToList().ForEach(_ => _.Insert(0, "http://"));

答案 2 :(得分:1)

使用Union执行此操作的另一种方法是:

var result =
    list.Where(url => url.StartsWith("http://"))
        .Union(list.Where(url => !url.StartsWith("http://")).Select(url => $"http://{url}"))
        .ToList();