Я нахожусь в создании TreeView
, который может отображаться с различными группировками. Основные классы ниже:Linq группировка и вложенная группировка
public class MachineStatus
{
public string MachineName {get;set;}
public string Department {get;set;}
public string LocationName {get;set;}
public IEnumerable<DeviceStatus> Devices {get;set;}
}
public class DeviceStatus
{
public string DeviceName {get;set;}
public string DeviceType {get;set;}
public string IpAddress {get;set;}
public ConnectionStatus Status {get;set;}
}
Группы будет по Department
, по Location
, и DeviceType
. Первые два из них легки с Linq. Однако DeviceType
является сложным, поскольку каждый Machine
может содержать несколько объектов Device
разных типов.
необработанных данных
Machine 1
|__ Device A (Type Foo)
|__ Device B (Type Bar)
Machine 2
|__ Device C (Type Foo)
|__ Device D (Type Zed)
Результат
Type Bar
|__ Machine 1
|__Device B
Type Foo
|__Machine 1
|__Device A
|__Machine 2
|__Device C
Type Zed
|__Machine 2
|__Device D
Я думаю, что я должен был бы придавить список MachineStatus
записей, прежде чем пытаться группы, но я получаю смешано с использованием SelectMany ...
Вы получаете шанс посмотреть на мой ответ? .. –
Да, я сделал, я в процессе интеграции. Я хотел изучить несколько вещей, прежде чем отметить это как ответ (на самом деле просто добавить комментарии для будущих людей, которым это может понадобиться). Интеграция анонимных типов в древовидное представление ... не весело :) Я обновлю сегодня. – Killnine
Из ваших данных результата представляется, что вы группируете устройства по имени машины, а также типа - так что двухуровневая вложенная группировка. Это правильно? – Enigmativity