rksoftware

Visual Studio とか C# とかが好きです

.NET 9 Preview 1 で追加されたもう一つの LINQ メソッド Index を書いてみる

.NET 9 Preview 1 で追加された LINQ メソッドの中の .CountBy.AggregateBy は以前に書いてみました。

rksoftware.hatenablog.com

今日は .Index を書いてみます。

■ 書いてみた

こんな感じで index が取れます。いいですね。

// 0:a,1:a,2:b,3:b,4:c,5:c,6:a,7:b,8:c,9:c,10:c,11:c,12:c,13:c,
foreach (var (index, c) in "aabbccabcccccc".Index())
    System.Console.Write($"{index}:{c},");

実行結果

0:a,1:a,2:b,3:b,4:c,5:c,6:a,7:b,8:c,9:c,10:c,11:c,12:c,13:c,

でもこれだとあまりよくわからないので、もうどういうことか少しわかりやすく書いてみますね。

// 0:a,1:a,2:b,3:b,4:c,5:c,6:a,7:b,8:c,9:c,10:c,11:c,12:c,13:c
IEnumerable<(int index, char c)> e = "aabbccabcccccc".Index();
System.Console.WriteLine(string.Join(',', e.Select(m=> $"{m.index}:{m.c}")));

実行結果

0:a,1:a,2:b,3:b,4:c,5:c,6:a,7:b,8:c,9:c,10:c,11:c,12:c,13:c

■ 定義

定義は素直にこうでした。

public static IEnumerable<(int Index, TSource Item)> Index<TSource>(this IEnumerable<TSource> source);

■ いいですね。

いいですね。.NET 9 楽しむデス。そなえそう。