Here is go
string values =
"791614658157877252798812866593459341672" +
"70394230993719343824081492140451573967356";
var characterGroup = (
from chr in values.ToCharArray()
group chr by chr into grp
select new
{
Letter = grp.Key,
Occurrences = grp.Count(),
Code = Convert.ToInt32((int)grp.Key)
})
.ToList()
.OrderBy((item) => item.Letter.ToString());
dataGridView1.DataSource = (from item in characterGroup select item).ToList();
Or for in a class
Class
public class Item
{
public char Letter { get; set; }
public int Occurrences { get; set; }
public int Code { get; set; }
}
Worker class
public class Operations
{
public static List<Item> GetItems(string values)
{
var characterGroup = (
from chr in values.ToCharArray()
group chr by chr into grp
select new Item { Letter = grp.Key, Occurrences = grp.Count(), Code = Convert.ToInt32((int)grp.Key) })
.ToList()
.OrderBy((item) => item.Letter.ToString());
return (from item in characterGroup select item).ToList();
}
Usage
private void CountButton_Click(object sender, EventArgs e)
{
string values =
"791614658157877252798812866593459341672" +
"70394230993719343824081492140451573967356";
dataGridView1.DataSource = Operations.GetItems(values);
}
In a ListBox
public class Item
{
public char Letter { get; set; }
public int Occurrences { get; set; }
public int Code { get; set; }
public override string ToString() => $"{Letter} - {Occurrences}";
}
Usage
private void CountButton_Click(object sender, EventArgs e)
{
string values =
"791614658157877252798812866593459341672" +
"70394230993719343824081492140451573967356";
listBox1.DataSource = Operations.GetItems(values);
}
Edit, to get a string from comma and returns
var raw = @"7916,1465,8157,8772,5279,8812,8665,9345,9341,6727
0394,2309,9371,9343,8240,8149,2140,4515,7396,7356";
string values = raw.Replace(",", "").Replace("\r\n", "");
listBox1.DataSource = Operations.GetItems(values);