Лучший способ управлять несколькими схемами - это использовать XmlSchemaSet; добавьте свои схемы в XmlSchemaSet и затем скомпилируйте их. Это должно ответить на ваш "SOM в памяти".
То, как использовать LINQ против скомпилированного XmlSchemaSet, очень сильно зависит от типа проблемы, которую вы пытаетесь решить. Например, допустим, вы пытаетесь получить все элементы в пространстве имен XML. Вы могли бы написать что-то вроде этого (я понимаю, что сформулировал это на C #, надеюсь, у вас все в порядке).
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();
Другим примером может быть использование предложения Distinct для сбора набора пространств имен XML, составляющих ваш набор.
List<string> query1 = (from XmlSchema schema in xset.Schemas() select schema.TargetNamespace).ToList();
IEnumerable<string> xmlns = query1.Distinct();
Я надеюсь, что это даст вам представление ...