.NET 9 Preview 1 で LINQ メソッドの .CountBy
と AggregateBy
が追加されたので書いてみます。
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 楽しみですね。そなえよう。