У меня структура ниже класса,
public class CollectionProperty
{
public string Name { get; set; }
public object Value { get; set; }
public string DataType { get; set; }
}
public class Instance
{
public string Name { get; set; }
public List<CollectionProperty> CollectionProperties { get; set; }
}
public class CollectionResult
{
public string Asset { get; set; }
public List<Instance> Instances { get; set; }
}
У меня результат ниже коллекции с 2 экземплярами, имеющими различные свойства коллекции с двумя типами данных double и string.
var collectionResult = new CollectionResult
{
Asset = "A1",
Instances = new List<Instance>
{
new Instance
{
Name = "Instance-1",
CollectionProperties = new List<CollectionProperty>
{
new CollectionProperty {Name = "N1", Value = 10, DataType = "Double"},
new CollectionProperty {Name = "N2", Value = "S1", DataType = "String"}
}
},
new Instance
{
Name = "Instance-2",
CollectionProperties = new List<CollectionProperty>
{
new CollectionProperty {Name = "N1", Value = 20, DataType = "Double"},
new CollectionProperty {Name = "N2", Value = "S2", DataType = "String"}
}
}
}
};
Теперь моя цель разделить результаты коллекции на различные экземпляры и сгруппировать их по типу данных. С приведенным ниже кодом я могу разделить пут, но он дает мне 4 результата сбора, но он должен дать 2 (2 для двойной и 2 для строки), пожалуйста, предложите. Спасибо!

var X = collectionResult.Instances
.SelectMany(collectionInstance => collectionInstance.CollectionProperties,
(collectionInstance, collectionProperty) =>
new
{
CollectionResult = new CollectionResult
{
Asset = collectionResult.Asset,
Instances = new List<Instance>
{
new Instance
{
Name = collectionInstance.Name,
CollectionProperties = new List<CollectionProperty>
{
collectionProperty
}
}
},
},
Instance = collectionInstance.Name,
Property = collectionProperty.Name,
DataType = collectionProperty.DataType
});