如何使用Lambda表达式来执行此操作?Lambda表达式来迭代通过集合并编辑C#
foreach (var l in urllist)
{
l.Url = l.Url + "?id=" + client.id+ "&active=" + client.Active;
}
如何使用Lambda表达式来执行此操作?Lambda表达式来迭代通过集合并编辑C#
foreach (var l in urllist)
{
l.Url = l.Url + "?id=" + client.id+ "&active=" + client.Active;
}
不要使用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>
,你也可以使用,LINQ预.NET 2方法ForEach
:
urllist.ForEach(l => l.Url = string.Format("{0}?id={1}&active={2}", l.Url, client.id, client.Active));
注意,'.ToList'实际上会返回'List
@pswg:呃,纠正。谢谢。但是,你真的不应该使用这种方法。所以我只是想防止它;) –
感谢您的所有答案。我坚持使用传统的foreach循环。 – Gokul
如果它是一个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);
'1.Url ='????? –
你确定,它是'1.Url' – Tilak
哦,也许这应该是'l.Url',它本质上是一个'+ ='操作。 –