C# 如何使用linq检查xml文件中是否已经存在值
虽然这个问题有很多答案,但我找不到一个适合我的答案。 应用程序打开xml文件,从列表中添加新条目,但防止重复。我不知道如何检查(使用Linq)该项是否已经在xml中C# 如何使用linq检查xml文件中是否已经存在值,c#,xml,linq,C#,Xml,Linq,虽然这个问题有很多答案,但我找不到一个适合我的答案。 应用程序打开xml文件,从列表中添加新条目,但防止重复。我不知道如何检查(使用Linq)该项是否已经在xml中 奥迪 宝马 这就是代码。(为了简单起见,我省略了修剪、大写等) 问题在于result变量,它总是返回false XDocument doc = XDocument.Load(@filePath); for (int i = 0; i < items.Count; i++) { var result = doc
奥迪
宝马
这就是代码。(为了简单起见,我省略了修剪、大写等)
问题在于result变量,它总是返回false
XDocument doc = XDocument.Load(@filePath);
for (int i = 0; i < items.Count; i++)
{
var result = doc.Descendants("Item").Any(x => x.Element("Text").ToString().Equals(items[i]);
if (! result)
{
}
doc.Save(@filePath);
XDocument doc=XDocument.Load(@filePath);
对于(int i=0;ix.Element(“Text”).ToString().Equals(items[i]);
如果(!结果)
{
}
单据保存(@filePath);
您的问题是:
x.Element("Text").ToString()
要获取文本
节点内的字符串,请使用值
像这样:
XDocument doc = XDocument.Load(@filePath);
for (int i = 0; i < items.Count; i++)
{
var result = doc.Descendants("Item").Any(x => x.Element("Text").Value.Equals(items[i]));
if (!result)
{
}
}
doc.Save(@filePath);
XDocument doc=XDocument.Load(@filePath);
对于(int i=0;ix.Element(“Text”).Value.Equals(items[i]);
如果(!结果)
{
}
}
单据保存(@filePath);
您的问题是:
x.Element("Text").ToString()
要获取文本
节点内的字符串,请使用值
像这样:
XDocument doc = XDocument.Load(@filePath);
for (int i = 0; i < items.Count; i++)
{
var result = doc.Descendants("Item").Any(x => x.Element("Text").Value.Equals(items[i]));
if (!result)
{
}
}
doc.Save(@filePath);
XDocument doc=XDocument.Load(@filePath);
对于(int i=0;ix.Element(“Text”).Value.Equals(items[i]);
如果(!结果)
{
}
}
单据保存(@filePath);
我认为您误解了XML的格式。您正在寻找与文本
元素的InnerXml
相匹配的元素,而您在这里从未这样做过。因此,您需要从根->项->项->文本->值移动,这与您的代码不完全相同
因此,您至少需要在
Text
元素(x.element(“Text”).Value
)上使用值另外,我认为您对子体的调用会直接返回Text
元素,因此我建议在此之后检查IEnum,并确认您当时的xml级别。我没有使用该方法,但我的理解是,它会为您提供xpath的子体,这意味着它不会为您提供ext元素。如果是这种情况,请将该字符串更改为“Items”
然后你就可以走了。我相信你误解了XML的格式。你正在寻找与文本
元素的InnerXml
相匹配的内容,而你在这里从来没有这样做过。因此你需要从根->项->项->文本->值移动,而这与你的代码并不完全一致
因此,您至少需要在Text
元素(x.element(“Text”).Value
)上使用值另外,我认为您对子体的调用会直接返回Text
元素,因此我建议在此之后检查IEnum,并确认您当时的xml级别。我没有使用该方法,但我的理解是,它会为您提供xpath的子体,这意味着它不会为您提供ext元素。如果是这种情况,将该字符串更改为“Items”
,您就可以开始了