Lambda表达式通过集合迭代并编辑C#

时间:2013-07-18 15:27:00

标签: c# .net lambda

如何使用Lambda表达式执行此操作?

foreach (var l in urllist)

{
  l.Url = l.Url + "?id=" + client.id+ "&active=" + client.Active;
}

3 个答案:

答案 0 :(得分:4)

不要使用Linq来修改集合,而是使用循环:

所以这是最好的方法(看一下UriBuilder Class):

foreach (var l in urllist)
{
    l.Url = string.Format("{0}?id={1}&active={2}", l.Url, client.id, client.Active);
}

您必须创建一个新的集合,否则效率低于修改原始集合的效率:

urllist = urllist
    .Select(l => {l.Url = string.Format("{0}?id={1}&active={2}", l.Url, client.id, client.Active; return l;})
    .ToList();

如果urllistList<T>,您还可以使用pre-linq .NET 2方法ForEach

urllist.ForEach(l => l.Url = string.Format("{0}?id={1}&active={2}", l.Url, client.id, client.Active));

答案 1 :(得分:2)

如果是List<T>,您可以使用ForEach方法:

urlList.ForEach(x => x.Url += "?id=" + client.id+ "&active=" + client.Active);

否则,这会起作用,虽然它依赖于评估Count的副作用,我不建议将它用于生产代码:

urlList.Select(x => x.Url += "?id=" + client.id+ "&active=" + client.Active)
       .Count();

就个人而言,我坚持使用传统的foreach循环。

答案 2 :(得分:0)

这是你在找什么?

urllist.ForEach(l => 1.Url = l.Url + "?id=" + client.id+ "&active=" + client.Active);