寻找更简单的方法 - 眼睛更容易

cll*_*pse 1 c# linq

你会如何重写下面的内容,所以它的眼睛更容易一些?

Func<DateTime, String> formatter = null;

formatter = new Func<DateTime, String>(d =>
{
    var r = "";

    foreach (var i in new[] { d.Day, d.Month, d.Year })
    {
        if (i < 10) r += "0";

        r += i.ToString();
    }

    return r;
});
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 6

我把它重写为:

Func<DateTime, String> formatter = d => d.ToString("ddMMyyyy", 
    CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)

唯一不同的是,对于1000AD之前的日期,这将填充到4位而不是2 ...

编辑:正如评论中所述,这并没有复制原始代码中的错误 - 它会将(比方说)5个月格式化为"055".在原始代码中解决此问题的最简单方法是:

if (i < 10) r += "0";
r += i;
Run Code Online (Sandbox Code Playgroud)

(但我还是更喜欢我的代码:)