Как было упомянуто DavidG, вы можете создавать любые сложные типы, которые будут соответствовать вашим специфическим c потребностям, поэтому, например,
public class TranInOutContainer
{
public List<TranInOutDtl> TranInOutDtl Dtl {get; set;}
public List<TranInOutDtlsub> TranDtlSub DtlSub {get; set;}
....
}
будет допустимым решением вашей проблемы
Вы также можно использовать dynamic
тип c, но его следует использовать только в том случае, если другого решения не существует