how to make this better code and more optimized
so i am displaying first letter of the each Name starting from A and all the way to Z
some thing like this:
A
Anthony Allan ...B
Bob Builder ....C
Charyl Carl ... Z Zoah ....how can i make this code more optimized and use less line?
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).ToUppe开发者_运维问答r();
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
}
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...
}
I will change the repeated 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;
}
}
}
精彩评论