【发布时间】:2017-02-09 12:29:13
【问题描述】:
我已经对这种方法进行了重构。在我们有很多循环和虚拟代码之前。这是我能做到的,但我认为我可以更简单。
我想我可以直接从 from * 组中选择并以正确的方式放入列表中。
这可能吗?或者我必须有这个循环?
private IEnumerable<ESMatchDate> groupBydate(IEnumerable<ESMatch> matches)
{
List<ESMatchDate> lMatchDates = new List<ESMatchDate>();
if (null != matches && matches.Any())
{
var dates = from ESMatch in matches
group ESMatch by ESMatch.BeginDate.ToShortDateString() into newGroup
orderby Convert.ToDateTime(newGroup.Key)
select newGroup;
foreach (var d in dates)
lMatchDates.Add( new ESMatchDate
{ Date = Convert.ToDateTime(d.Key), Matches = d.ToList()} );
}
else
lMatchDates = null;
return lMatchDates;
}
【问题讨论】:
-
最好在 codereview.stackexchange.com 中询问
-
顺便说一句,我假设
BeginDate是一个DateTime变量,你想截断时间。您通过字符串和转换的方法不好,请使用:group ESMatch by ESMatch.BeginDate.Date into newGroup。那么你就不需要做任何转换了