2

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

foreach (var l in urllist)

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

3 回答 3

4

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

所以这是最好的方法(看看UriBuilderClass):

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));
于 2013-07-18T15:30:54.123 回答
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循环。

于 2013-07-18T15:30:58.920 回答
0

这是你想要的?

urllist.ForEach(l => 1.Url = l.Url + "?id=" + client.id+ "&active=" + client.Active);
于 2013-07-18T15:33:34.600 回答