Я пытаюсь группировать элементы из списка пользовательских объектов.GroupBy: как обрабатывать пустые группы?
Объект:
Public class MyObj
{
public string groupName{ get; set; }
public int year{ get; set; }
public MyObj(string groupName)
{
this.GroupName = groupName;
}
public MyObj(string groupName, int year)
{
this.GroupName = groupName;
this.Year = year;
}
}
Список:
List<MyObj> list = new List<MyObj>();
list.Add(new MyObj("group1", 2012));
list.Add(new MyObj("group1", 2013));
list.Add(new MyObj("group2", 2012));
list.Add(new MyObj("group2", 2013));
list.Add(new MyObj("group3"));
list.Add(new MyObj("group3"));
Если я что-то вроде:
IEnumerable<IGrouping<string, MyObj>> listMyObj = list.GroupBy(o => o.Year);
"группы 3" п будет включен в списке результатов. Как я могу группировать MyObjs по году и сохранять пустой элемент «group3» в результате?
Это просто не соответствует действительности - и я только что проверил это в LINQPad. Он будет включен в группировку с ключом группировки == 0 ('default (int)'). Если ключ был недействительным ссылочным или нулевым типом, он будет сгруппирован под ключ == 'null'. –
Вы пробовали использовать этот код? Если вы исправите различные ошибки («год» вместо «Год», различные отсутствующие скобки, неправильный тип для listMyObj), вы должны обнаружить, что объекты, в которых вы не установили год, получают группу с ключом 0. –
-1 за неправильное предположение, которое можно было легко проверить. Вы также должны предоставить компиляцию кода, если вы уже показываете образцы данных. –