Я создал рефакторинг при этом методе. прежде чем у нас было много циклов и фиктивный код. Это как можно дальше, но я думаю, что я мог бы намного проще.Linq groupBy Перегруппировка в список <> простым/чистым способом
Я думаю, что я мог бы направить из группы * &, выбрав правильный список.
Возможно ли это? или у меня должен быть этот цикл?
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 в newGroup'. Тогда вам не нужно делать какие-либо преобразования –