How to make this code better and optimized

so I show the first letter of each name, starting with the letter A and up to Z

something like that:

A
Anthony
Allan
...

B
Bean
Builder
....

C
Charyl
Charles
...
Z
Zoah
....

how can i make this code more optimized and use fewer lines?

int _a = 0; int _b = 0; int _c = 0; ... ... .. int _z = 0; protected void ListItem(List<Customer>.Enumerator cust) { if (cust.MoveNext()) { Customer t = cust.Current; string[] list = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "v", "z" }; var output = list.Aggregate("", (current, listitem) => current + (Environment.NewLine + "<h1 id='" + listitem.ToUpper() + "'><span>" + listitem.ToUpper() + "</span></h1>")); string _name = t.Name.Substring(0, 1).ToUpper(); if (_name == list[0].ToUpper()) { if (_a == 0) { l = new Literal(); l.Text = "<h1 id='A'><span>A</span></h1>" + Environment.NewLine; ..... _a = 1; } if (_name == list[1].ToUpper()) { if (_b == 0) { l = new Literal(); l.Text = "<h1 id='B'><span>A</span></h1>" + Environment.NewLine; ..... _b = 1; } } ... .... .... ... doing through Z } 
+4
source share
2 answers

I will change the repeating code with this idea.

 List<char> HeaderOf = new List<char>(); protected void ListItem(List<Customer>.Enumerator cust) { if (cust.MoveNext()) { Customer t = cust.Current; string[] list = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "v", "z" }; var output = list.Aggregate("", (current, listitem) => current + (Environment.NewLine + "<h1 id='" + listitem.ToUpper() + "'><span>" + listitem.ToUpper() + "</span></h1>")); char CheckMe = t.Name.Substring(0, 1).ToUpper()[0]; if (!HeaderOf.Contains(CheckMe)) { HeaderOf.Add(CheckMe); l = new Literal(); l.Text = "<h1 id='" + CheckMe + "'><span>" + CheckMe + "</span></h1>" + Environment.NewLine; } } } 
+1
source
 List<Customer> myList; //produces a sequence of strings with the format: //<h1 id="A"><span>A</span></h1> //Anthony<br /> //... var stringValues = myList .GroupBy(c => c.Name[0].ToUpper()) .OrderBy(g => g.Key) .Select(g => string.Format( "<h1 id=\"{0}\"><span>{0}</span></h1>{1}\n", g.Key, g.Aggregate("", (a,i) => string.Format( "{0}<br />\n", i.Name)))); foreach(var stringValue in stringValues) { var l = new Literal(); li.Text = stringValue; //not sure what you're doing with the literal from here... } 
+3
source

All Articles