如何使用Lambda表达式执行此操作?
foreach (var l in urllist)
{
l.Url = l.Url + "?id=" + client.id+ "&active=" + client.Active;
}
答案 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();
如果urllist
是List<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);