0

各アイテムを連結するために.Aggregateon aを使用しています。List<String>イテレーションがいつ最後の項目に達したかを調べる必要があります。テストを検討していましたが、値が同じであれば、listOfStrings.Last() == currentStringリストの最後の項目は他の項目と同じになる可能性があります。

4

3 に答える 3

2

なぜこれを知る必要があるのですか?

推測ですが、「x、y、z」などの文字列を生成するのと同様のことをしているように聞こえますが、最後の項目の後にコンマは必要ありません。

このような場合は、string.Join(separator, items)代わりに使用できます。「x、y、z」の形に合うものが必要でない限り?

本当に を使用する必要がある場合はAggregate、次のように外部変数を閉じることができます。

int count = 0;

var aggregated = items.Aggregate(new StringBuilder(), (acc, item) =>
{
    if (++count == items.Count)
    {
        // it's the last item
        acc.Append("last");
    }
    else
    {
        acc.Append("not last, ");
    }
    return acc;
}).ToString();
于 2012-07-24T09:38:03.397 に答える
1

これを使用してください(1行のコードのみ):

int i = 0;
string strResult = listOfStrings.Where(s => ++i != listOfStrings.Count)
                                .Aggregate("", (current, s) => current + s);
于 2012-07-24T09:46:39.247 に答える
1

このようなもの?

var count=listOfStrings.Count();

var result=listOfStrings.Aggregate(
   new { i=0, v=String.Empty},
   (x,y) => new { i=x.i+1, v=(x.i+1 == count) ? x.v + "&" + y : x.v+","+y},
   x=>x.v
   );
于 2012-07-24T09:50:26.857 に答える