如何制作更好的代码并进行更优化

时间:2011-06-03 23:14:42

标签: asp.net

所以我显示每个名字的第一个字母,从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

}

2 个答案:

答案 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;
        }
    }
}