所以我显示每个名字的第一个字母,从A开始,一直到Z
有些事情是这样的:
A
安东尼
艾伦
...
B
鲍勃
建造者
....
C
Charyl
卡尔
......
Z
Zoah
....
如何让这些代码更加优化并使用更少的线?
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
}
答案 0 :(得分:3)
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...
}
答案 1 :(得分:1)
我会用这个想法改变重复的代码。
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;
}
}
}