1

我有以下内容:

var options = xxx
    .Select(x => new SelectListItem
    {
        Value = ((int) Enum.ToObject(t, x)).ToString(),
        Text = Regex.Replace(x.ToString(), "([A-Z])", " $1").Trim()
    });

这是这样调用的方法的一部分:

GetSpacedOptions(bool zeroPad = false)

如果 zeroPad 设置为 true,那么我该如何做到这一点,而不是返回 1、2、3、4、5 等,而是返回“01”、“02”等作为选择中的值?如果 zeroPad 设置为 default 或 false 那么它需要返回 1,2 等。

4

3 回答 3

2

我不确定我的问题是否正确,但这是一种方法。

string numberFormat = zeroPad ? "D2" : "g";
...
Value = ((int) Enum.ToObject(t, x)).ToString(numberFormat),
于 2012-10-22T03:55:52.853 回答
1

那这个呢:

var options = xxx 
.Select(x => new SelectListItem 
{ 
    Value = zeroPad ? ((int) Enum.ToObject(t, x)).ToString().PadLeft(2, '0')
        : ((int) Enum.ToObject(t, x)).ToString(), 
    Text = Regex.Replace(x.ToString(), "([A-Z])", " $1").Trim() 
}); 

诀窍就是PadLeft方法。请注意,第一个参数是字符串的总长度,因此如果(int)Enum.ToObject(t, x)返回双(或更多)数字的值,您可能需要根据这些较大值的显示方式将总长度调整为更合适的值。

于 2012-10-22T03:54:42.367 回答
0

怎么样

private void GetSpacedOptions(bool zeroPad = false)
{
    string str = "";
    if(zeropad)
    {
        str = //
    }
    else
    {
        str = //
    }

    //Then use str in code
    var options = //
}
于 2012-10-22T03:52:37.347 回答