在linq获得单词的同义词

时间:2012-07-23 08:39:20

标签: c# xml linq

我想在c#中获得单词的同义词。例如,merhaba - hello或selam-hi。我只能做" merhaba"到"你好"但我无法访问其他节点。(merhaba-hi或selam-hi) 我怎样才能做到这一点 ? 感谢。

我的XML文件。

<Words>
    <Meaning>
        <Turkish type="noun">merhaba</Turkish>
        <Turkish type="noun">selam</Turkish>
        <English type="noun">hello</English>
        <English type="noun">hi</English>
    </Meaning>
</Words>

我的查询就是这样。

var word = from p in doc.Elements("Words").Elements("Meaning")
             where textBox1.Text == p.Element("Turkish").Value
             select new
             {
                _word = p.Element("Turkish").Value,
                meaning = p.Element("English").Value,
                kind = p.Element("English").Attribute("type").Value
             };

1 个答案:

答案 0 :(得分:1)

你可能想尝试这样的事情:

var word = from p in doc.Elements("Words").Elements("Meaning")
           where p.Elements("Turkish").Any(item => item.Value == textBox1.Text)
           from synonym in p.Elements("English")
           select new
           {
               _word = textBox1.Text,
               meaning = synonym.Value,
               kind = synonym.Attribute("type").Value
           };

表达式p.Elements("Turkish").Any(item => item.Value == textBox1.Text)查找包含所需单词的含义元素。 from synonym in p.Elements("English")行会遍历名称为English的所有元素。