複雑なケースがあります。3つのXMLファイルがあり、それらを同時に読み取り、一致に基づいて結果を取得する必要があります。以下は、私がやっていることとほとんど同じように、実際の(しかし偽の)例です。
たとえば、2つのxmlファイルがあります。どちらも似ていますが、タグと属性の点では異なりますが、内容(言語)が異なります。C#ファイルのコードのように、両方の言語を同時に読んでいます。
XElement x1 = XElement.Load (@"abc.xml");
XElement x2 = XElement.Load (@"xyz.xml");
var ch = from var1 in x1.Elements("language1")
where var1.Attribute("index").Value == "1"
from var2 in x2.Elements("language2")
where var2.Attribute("index").Value == var1.Attribute("index").Value
select dictChapter as new
{
sentenceNumber = var1.Attribute("index").Value,
SentenceInLanguage1 = var1.Attribute("text").Value,
SentenceInLanguage2 = var2.Attribute("text").Value,
};
ListBox.DataContext = ch;
ここでの問題は、x1には1000文が含まれているため、x2が含まれていることです。上記のロジックはネストされたループのように機能し、処理が大幅に遅くなります。それは次のように機能します
x1.1 -> x2.1:1000
x1.2 -> x2.1:1000
また
for i in x1
for j in x2
x1のセンテンスIDがx2のセンテンスIDと等しい場合に、x1とx2からセンテンスを選択するためのより良い効率的な方法はありますか?