次の XML ファイルがあります。
<Price id="70">
<Side id="111" option="1" startPrice="3.5"/>
<Side id="222" option="2" startPrice="1.25"/>
</Price>
<Price id="20">
<Side id="333" option="1" startPrice="1.25"/>
<Side id="444" option="2" startPrice="3.25"/>
</Price>
<Price id="22">
<Side id="555" option="1" startPrice="1.25"/>
<Side id="666" option="2" startPrice="3.25"/>
</Price>
<Price id="23">
<Side id="777" option="1" startPrice="2.25"/>
<Side id="888" option="2" startPrice="3.25"/>
</Price>
<Price id="24">
<Side id="999" option="1" startPrice="2.25"/>
<Side id="000" option="2" startPrice="3.25"/>
</Price>
各オプションを他のオプションに対して計算し、次の計算を行います。
1 / ((1 / startPrice) + (1 / startPrice))
次の計算が1以上の場合、サイド ID を取得します。
例えば:
1 / ((1 / 3.5) + (1 / 1.25))
は0.9210526315789471に等しいので、私には関係ありません。
XML には 3 つのサイドがある場合もあれば、(上記の例のように) 2 つのサイドがある場合もあります。
各オプション(1/2/3)
を他のオプションに対してチェックする必要があるため、オプション 1 をチェックする場合は、オプション 2 または 3 (存在する場合) に対してチェックする必要があります。オプション 2 をチェックする場合は、オプション 1 に対してチェックする必要があります。および 3 など
したがって、要約すると、ロジックは次のようになります。
Check Side ID 111 against `222, 444, 666, 888, 000.`
終了時、check Side 222 against 111, 333, 555, 777, 999.
1 より大きい結果を返すオプションが複数ある場合は、次のようにすべてのオプションを取得したいと考えています。
111 and 444
111 and 666
222 and 777
等
LINQでやろうと思ったのですが、とても複雑なロジックのようですので、ここであなたの助けが必要です.