private IEnumerable<component> ProcessComponent(IEnumerable<Component> components) { foreach (var component in components.OrderBy(c => c.Name)) { var componentNode = new component(); componentNode.@class = component.Specification.Name; componentNode.name = component.Name; foreach (var property in component.Properties.OrderBy(p => p.PropertyName)) { ComponentProperty representedProperty = property.RepresentedProperty; var propertyNode = new property(); propertyNode.name = representedProperty.Name; propertyNode.type1 = representedProperty.Type; propertyNode.column = property.MappedColumn().Name.BackTick(); propertyNode.notnull = true; // This must be true for Component Properties. componentNode.AddProperty(propertyNode); } yield return componentNode; } }