繁体   English   中英

Lambda表达式遍历集合并编辑C#

[英]Lambda expression to Iterate through a collection and edit C#

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

foreach (var l in urllist)

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

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

因此,这是最好的方法(请看一下UriBuilder ):

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>还可以使用linq之前的.NET 2方法ForEach

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

如果它是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循环。

这是你想要的?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM