5

次の 2 つのボタン クリック メソッドを使用して、3 つの TextBox から配列を作成し、値を並べ替えてデータベースに挿入し、同じ順序で値を選択します。2 つのボタンの唯一の違いは、一方は値を昇順で並べ替え、もう一方は降順で並べ替えることです。

C# の操作に慣れていません。ボタンごとに繰り返さないように、コードを構造化する最良の方法を誰かが提案できますか? 通常、関数を作成し、各ボタンに引数を渡します。ここに行くのは正しい方法ですか?

前もって感謝します。

ボタン1

protected void Button1_Click(object sender, EventArgs e)
{
    var list = new string[] { TextBox1.Text, TextBox2.Text, TextBox3.Text };
    var orderedlist = list.OrderBy(x => (x)).ToArray();

...

    SqlCommand cmd = new SqlCommand("Select * from lists order by values asc", conn);

ボタン2

protected void Button2_Click(object sender, EventArgs e)
{
    var list = new string[] { TextBox1.Text, TextBox2.Text, TextBox3.Text };
    var orderedlist = list.OrderByDescending(x => (x)).ToArray();

...

    SqlCommand cmd = new SqlCommand("Select * from lists order by values desc", conn);
4

3 に答える 3

5

Button両方のクリック イベントを同じハンドラーに割り当てて、sender必要な並べ替えを選択するだけです。

protected void Button_Click(object sender, EventArgs e)
{
    var list = new string[] { TextBox1.Text, TextBox2.Text, TextBox3.Text };
    var orderedlist = (sender as Button).AccessKey  == "Button1" // or whatever name it is
                      ? list.OrderByDescending(x => (x)).ToArray()
                      : list.OrderBy(x => (x)).ToArray();

    .............
}
于 2013-02-25T22:03:03.053 に答える
2

オプションで、関数を作成することです。並べ替え:

public list sort(String order)
{
     var list = new string[] { TextBox1.Text, TextBox2.Text, TextBox3.Text };
     var orderedlist = list.OrderByDescending(x => (x)).ToArray();
     ...

     SqlCommand cmd = new SqlCommand("Select * from lists order by values " + order, conn)
     ...
     return SortedList;
}

ソートされたリストを昇順で作成するには sort("asc") を呼び出し、降順でソートするには sort("desc") を呼び出します。そして、コードの繰り返しはありません:)

于 2013-02-25T22:02:41.430 に答える
0

ここでは基本的に関数型プログラミングを使用できます。関数に変更するコードの部分を抽象化します。

protected void Button1_Click(object sender, EventArgs e)
{
    HelperFunction(list => list.OrderBy(x => x));
}

protected void Button2_Click(object sender, EventArgs e)
{
    HelperFunction(list => list.OrderByDescending(x => x));
}

private void HelperFunction(Func<IEnumerable<string>, <IEnumerable<string>> listOrderer)
{
    var list = new string[] { TextBox1.Text, TextBox2.Text, TextBox3.Text };

    var orderedList = listOrderer(list).ToArray();

    // rest of code
}
于 2013-02-25T22:11:03.550 に答える