Should this container be a struct or a class?
Keep it a class

The linked MSDN guideline says so itself:


  X AVOID defining a struct unless the type has all of the following characteristics:
  
  
  it has an instance size under 16 bytes
  


It should be pretty clear that DataContainer is going to be much larger than 16 bytes.

One of the reasons this is a concern is that structs are stored on the stack.  The default .NET thread stack size is 1MB, so in an extreme case, a struct which is too large could get you a StackOverflowException without any recursion required.