var list = new[] { "Banana", "Apple", "Cheery", "Lemon", "Orange" };
var js = new JObject(from y in Enumerable.Range(0, 9)
join x in list
on y equals (x[0] - 'A') / 3
into g
let k = string.Join(", ", from i in Enumerable.Range(0, 3)
select (char)(3 * y + i + 'A'))
let v = string.Join(", ", from s in g orderby s select s)
select new JProperty(k, new JValue(v)));
Выход:
{
"A, B, C": "Apple, Banana, Cheery",
"D, E, F": "",
"G, H, I": "",
"J, K, L": "Lemon",
"M, N, O": "Orange",
"P, Q, R": "",
"S, T, U": "",
"V, W, X": "",
"Y, Z, [": ""
}