我有以下内容:
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;
}
这看起来像我可以组合成一个但我不知道如何处理参数。有人可以通过解释我如何做到这一点来帮助我吗?
答案 0 :(得分:8)
如果在您显示的第一个构造函数中将value设置为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;
}
答案 1 :(得分: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;
}
然后通过检查null
的默认参数,将两个函数合并为一个。
答案 2 :(得分: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);
}