rksoftware

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

.NET 9 Preview 1 で追加された LINQ メソッドを書いてみる

.NET 9 Preview 1 で LINQ メソッドの .CountByAggregateBy が追加されたので書いてみます。

char[] t = ['a', 'b', 'a', 'a', 'b', 'c'];
{
    IEnumerable<KeyValuePair<char, int>> m = t.CountBy(x => x);

    // a: 3, b: 2, c: 1
    Console.WriteLine(string.Join(", ", m.Select(x => $"{x.Key}: {x.Value}")));
}

{
    IEnumerable<KeyValuePair<char, string>> m = t.AggregateBy(x => x, "", (s, x) => x + s);

    // a: aaa, b: bb, c: c
    Console.WriteLine(string.Join(", ", m.Select(x => $"{x.Key}: {x.Value}")));
}

{
    IEnumerable<KeyValuePair<char, List<char>>> m = t.AggregateBy(x => x, new List<char>(), (s, x) => { s.Add(x); return s; });

    // a: a/b/a/a/b/c, b: a/b/a/a/b/c, c: a/b/a/a/b/c
    Console.WriteLine(string.Join(", ", m.Select(x => $"{x.Key}: {string.Join("/",x.Value)}")));
}

いいねすね。使えそう。

ただ、最後のブロックのやつがまあ、そうなるんですが考えないといけないですね。結構 Aggregate でこういうことをやっていたので。

■ いいですね

しかし、このメソッド使えそうですね。素晴らしいです。.NET 9 楽しみですね。そなえよう。