2

私は次のものを持っています:

    protected SelectList GetReferenceOptions(string pk)
    {
        var options = new SelectList(_reference.Get(pk)
            .AsEnumerable()
            .OrderBy(o => o.Order), "RowKey", "Value");
        return options;
    }

    protected SelectList GetReferenceOptions(string pk, string value)
    {
        var options = new SelectList(_reference.Get(pk)
            .AsEnumerable()
            .OrderBy(o => o.Order), "RowKey", "Value", value);
        return options;
    }

これは私が1つに組み合わせることができるもののように見えますが、パラメーターの処理方法がわかりません。誰かが私がこれを行う方法を説明することによって私を助けることができますか?

4

3 に答える 3

8

表示する最初のコンストラクターで値がnullに設定されている場合、これは機能します。

protected SelectList GetReferenceOptions(string pk, string value = null)
{
    var options = new SelectList(_reference.Get(pk)
        .AsEnumerable()
        .OrderBy(o => o.Order), "RowKey", "Value", value);
    return options;
}
于 2012-05-30T04:30:05.373 に答える
0

次のようなデフォルトのパラメータを導入できます。

protected SelectList GetReferenceOptions(string pk, string value=null)
{
    var options = 
         value==null
             ? new SelectList(_reference.Get(pk)
               .AsEnumerable()
               .OrderBy(o => o.Order), "RowKey", "Value")
             : new SelectList(_reference.Get(pk)
               .AsEnumerable()
               .OrderBy(o => o.Order), "RowKey", "Value", value);
    return options;
}

次に、デフォルトのパラメータがであるかどうかを確認して、2つの関数を1つに結合しますnull

于 2012-05-30T04:29:22.230 に答える
0

両方の方法を保持し、それらを乾燥させる必要があります。それはもっとOOPです。多分:

protected SelectList GetReferenceOptions(string pk)
{
    return GetReferenceOptions(pk, null);
}

protected SelectList GetReferenceOptions(string pk, string value)
{
    return new SelectList(_reference.Get(pk).OrderBy(o => o.Order), 
                          "RowKey", "Value", value);
}
于 2013-02-09T21:13:26.797 に答える