Если можно использовать синтаксис SQL - говорят, если Вы используете LINQ для доступа к полям структуры или массива, или непосредственно получаете доступ к базе данных, которая имеет таблицу под названием "Алфавит" со всего одним символьным полем "Letter", можно адаптировать следующий код:
SELECT A.Letter, B.Letter, C.Letter
FROM Alphabet AS A, Alphabet AS B, Alphabet AS C
WHERE A.Letter<>B.Letter AND A.Letter<>C.Letter AND B.Letter<>C.Letter
AND A.Letter<B.Letter AND B.Letter<C.Letter
Это возвратит все комбинации 3 букв, несмотря на это, сколько букв Вы имеете в таблице "Alphabet" (это может быть 3, 8, 10, 27, и т.д.).
, Если то, что Вы хотите, является всеми перестановками, а не комбинациями (т.е. Вы хотите, чтобы "ACB" и "ABC" рассчитали как отличающиеся, а не появились только однажды), просто удаляют последнюю строку (И один), и это сделано.
Постредактирование: После перечитывания вопроса я понимаю то, что необходимо, общие алгоритм, не только определенный для случая выбора 3 объектов. Ответ Adam Hughes является полным, к сожалению, я (еще) не могу проголосовать за него. Этот простой ответ, но работы только для того, когда Вы хотите точно 3 объекта.
Джордж,
Чтобы сгенерировать классы из этих файлов, вы должны указать оба в командной строке:
D:\>xsd response.xsd response_app1.xsd /classes
Уже было правильно сказано, что два файла .xsd связаны с тем, что были два пространства имен XML в исходном файле XML. Кстати, я немного здесь предполагаю, потому что вы не разместили XML-файл.
IIRC, вы используете оба, один, вероятно, будет ссылаться на другой.
Причина создания двух файлов заключается в том, что ваш XML содержит два пространства имен XML; каждый сгенерированный XSD соответствует пространству имен. Один для пространства имен мыльного конверта импортирует пространство имен mycorp (которое вы можете увидеть из элемента xs: import).
Да, удалите пространства имен из файла XML и сгенерируйте его, вы получите один файл XSD