我有一个复杂的案例:我有三个 XML 文件,我需要同时读取它们并根据匹配获取结果。下面是一个有效的(但假的)示例,与我正在做的几乎相似。
例如,我有两个 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 和 x2 中选择句子,其中 x1 的句子 id 等于 x2 的句子 id?