The best way to manage multiple schemas is to use an XmlSchemaSet; add your schema(s) to an XmlSchemaSet and then compile it. This should answer your "SOM into memory".
For how to use LINQ against a compiled XmlSchemaSet, it very much depends on the type of problem you're trying to solve. For example, let's say you're trying to get all the elements in an XML namespace. You might write something like this (I realize I've phrased it in C#, I hope you're ok with it).
XmlSchemaSet xset = new XmlSchemaSet();
xset.Add(XmlSchema.Read(...);
xset.Compile();
var query = from XmlSchemaElement element in xset.GlobalElements.Values where element.QualifiedName.Namespace == "urn:tempuri-org:mine" select element;
foreach(XmlSchemaElement element in query) DoSomething();
Another example might be use the Distinct clause to collect the set of XML namespaces that make up your set.
List<string> query1 = (from XmlSchema schema in xset.Schemas() select schema.TargetNamespace).ToList();
IEnumerable<string> xmlns = query1.Distinct();
I hope these give you an idea...