次のXMLの例を考えると、Type1とType2の間のバインドされていない数の選択肢のシーケンスを含むものとしてRootを定義するスキーマを想像できます。
<Root>
<Type1 />
<Type2 />
<Type2 />
<Type1 />
</Root>
私はXSD.exeツールからの移行をテストしています。このツールは、型安全性を追加しますが、多くの厄介な問題があります。この場合のXSDツールは、Root内にSystem.Objectタイプの配列を作成するだけであり、そこにあるオブジェクトのタイプ(Type1またはType2)を把握する必要があります。完全にエレガントというわけではありませんが、少なくとも秩序を維持します。
問題は、LINQ to XSDがオブジェクトを作成するときに、ルートをType1とType2の2つの独立したリストを持つものとして定義することです。これはタイプセーフであるという点で優れていますが、要素の順序が失われているように見えます。codeplexのソースからLINQtoXSDをビルドしました。
LINQ to XSDを使用して、これらの要素の順序を保持するにはどうすればよいですか?