Q: collection support?
Hiya,
I was excited to see nested object support in this library - i had some preliminary questions - if you know them out of the top of your head, please let me know:
- Is writing nested objects supported?
- Is there a max depth of nested objects?
- Are collections of primitives/comples types supported?
Some info regarding my use-case: I have the following table in my view:

And i'd like to create an excel export - the data structure i have right now looks like this:
[DebuggerDisplay("{Month} {Damage} {Shortage} {OrderCount}")]
public class OperationalPerformanceDamageViewModel
{
[Orderable, Filterable] public DateTime Month { get; set; }
[Orderable, Filterable] public double DamagePerc { get; set; }
[Orderable, Filterable] public int Damage { get; set; }
[Orderable, Filterable] public double ShortagePerc { get; set; }
[Orderable, Filterable] public int Shortage { get; set; }
[Orderable, Filterable] public List<OperationalPerformanceDamagePerPartnerViewModel> DamagePerPartner { get; set; } = new();
[Orderable, Filterable] public int OrderCount { get; set; }
}
[DebuggerDisplay("{PartnerGroupCode} {Damaged} {Shortage}")]
public class OperationalPerformanceDamagePerPartnerViewModel
{
[Orderable, Filterable] public Guid PartnerGroupId { get; set; }
[Orderable, Filterable] public string? PartnerGroupCode { get; set; }
[Orderable, Filterable] public int Damaged { get; set; }
[Orderable, Filterable] public int Shortage { get; set; }
[Orderable, Filterable] public int Total { get; set; }
}
And i'd need to provide an excel export in some manner.
Edit; perhaps i could use a dynamic ExpandoObject to flatten the hiërarchy? something like:
var expandoObjectList = new List<ExpandoObject>();
var performanceDamageViewModels = q.ToList();
foreach (var viewModel in performanceDamageViewModels)
{
dynamic expandoObject = new ExpandoObject();
expandoObject.Month = viewModel.Month;
expandoObject.DamagePerc = viewModel.DamagePerc;
expandoObject.Damage = viewModel.Damage;
expandoObject.ShortagePerc = viewModel.ShortagePerc;
expandoObject.Shortage = viewModel.Shortage;
expandoObject.OrderCount = viewModel.OrderCount;
var expandoObjectAsDict = (IDictionary<string, object?>) expandoObject;
foreach (var perPartnerViewModel in viewModel.DamagePerPartner)
{
if (perPartnerViewModel.PartnerGroupCode != null)
expandoObjectAsDict.Add(perPartnerViewModel.PartnerGroupCode, perPartnerViewModel.Total);
}
expandoObjectList.Add(expandoObject);
}
- Saving nested objects is supported
- There is no max depth
- Collections are not supported out of the box (see #170, #134)
Re collections you might also try custom mapping.
- Saving nested objects is supported
- There is no max depth
- Collections are not supported out of the box (see Map Nested List #170, Possible to map an IEnumerable property? #134)
Re collections you might also try custom mapping.
Okay - thats too bad, but thanks for taking the time to answer my questions.