Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在linq中获得单词的同义词_C#_Xml_Linq - Fatal编程技术网

C# 在linq中获得单词的同义词

C# 在linq中获得单词的同义词,c#,xml,linq,C#,Xml,Linq,我想得到c#中单词的同义词。例如,merhaba-hello或selam hi。我只能执行“merhaba”到“hello”,但无法访问其他节点。(merhaba hi或selam hi) 我该怎么做? 谢谢 我的XML文件 <Words> <Meaning> <Turkish type="noun">merhaba</Turkish> <Turkish type="noun">selam<

我想得到c#中单词的同义词。例如,merhaba-hello或selam hi。我只能执行“merhaba”到“hello”,但无法访问其他节点。(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 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)
查找包含所需单词的含义元素。p.Elements(“English”)行中的
from同义词贯穿所有名为
English

的元素,首先我要注意的是,此XML不太适合您想要的内容。“hello-merhaba”和“hello-merhaba”之间没有直接的关联,只是它们碰巧都是该语言单词列表中的第一个单词。这绝对不是一条路要走。因此,除非该XML来自外部源,并且您无法让他们更改它;更改XML。我不知道您在这里实际想做什么。是否要获取所有节点,而不管输入的变量是什么?我同意XML结构似乎太扁平了一点,无法以清晰的方式实现这一点。用户输入“merhaba”,我想向他显示hello和hi。这个代码只会给我带来你好。我无法访问另一个名称相同的节点(英文)。那么我该怎么办?:)我应该把“English”换成其他地方吗?@Robii:在这种情况下,这四个单词的意思都是一样的,这就是为什么它们在同一个意义节点下。这可能并不完美,但相关性是它们都在同一个节点中,hello salem、hi merhaba等之间没有多少相关性。我可以从“merhaba”访问所有节点,但不能访问“selam”。一秒钟也不读node@user1545283我已更改where子句,以执行我认为您希望它执行的操作。如果这不是你想要的,如果你能澄清你想要的行为是什么就好了。这就是我想要的。感谢您的关注。我更正了我的查询,现在可以使用了:)我创建了一个新的“来自元素Turkish中的同义词”,并将其发送到where块…||p、 元素(“土耳其”)。。像那样。不管怎样,我很感激你的帮助。再次感谢:)
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
           };