2

ラムダ式を使用してこれを行うにはどうすればよいですか?

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();

の場合urllistList<T>、前の 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 に答える