.NET代码示例以找出代码中的错误

时间:2016-03-13 02:50:52

标签: c# .net linq

我有一个我想解决的匿名问题(这是一个在线示例问题)......我不确定代码的问题是什么......

for (var i = (DateTime?) startDate; i <= startDate.AddMonths(11); i = i.GetValueOrDefault().AddMonths(1))
{
   var scm = new ScorecardMonth { 
        TheMonth = i, 
        Scorecards = new List<Scorecard>() 
    };
    scm.Scorecards.AddRange(scorecards.FindAll(a => a.TheMonth = i).OrderBy(b => b.GoalType)); 
    scorecardMonths.Add(scm); 
} 

a。)在上面的代码中,我不确定(DateTime?)startDate是什么意思?

b。)scorecardMonths在最后一行...看来是一些对象List ..

c。)网上的问题说,代码出了什么问题?对我来说,除了在第2行到最后一行的==符号a =&gt; a。月份==我,我什么都看不到。

1 个答案:

答案 0 :(得分:1)

  

a。)在上面的代码中,我不确定(DateTime?)startDate是什么意思?

这就是将startDate强制转换为DateTime?个对象。 startDate可能是一个DateTime,为了这个for循环的目的,它被强制转换为可以为空的DateTime(DateTime?

  

b。)记分卡上最后一行的时间......看起来是某个对象..

同意,它看起来是一个列表,.Add暗示它是List< ScorecardMonth>

  

c。)网上的问题说,代码出了什么问题?第5行...记分卡没有对象名称...我想知道是否有其他突出的东西?

我会扔掉整件事并重新开始。我有点理解它在做什么,但它是以一种难以理解的方式编写的 - 这对我来说似乎更容易理解,ymmv:

for (var i = 0; i <= 11; i++)
{
    month = startDate.AddMonths(i);
    var scm = new ScorecardMonth { 
                        TheMonth = month, //this is a DateTime..
                        Scorecards = new List<Scorecard>()
    };

    scorecardsInMonth = scorecards.FindAll(a => a.TheMonth == month)
                                  .OrderBy(b => b.GoalType));
    scm.Scorecards.AddRange(scorecardsInMonth);

    scorecardMonths.Add(scm);
}