我正在尝试在 xml 文件中查询搜索词的两个属性。
我有这个:
<?xml version="1.0" encoding="utf-8" ?>
<Products>
<item ProductName="Golf Shirt" Content="This is a nice breathable shirt for golf." />
<item ProductName="Bowling Ball" Content="This is a colorful 8-lbs ball." />
<item ProdcutName="Tee Shirt" Content="100% cotton tee-shirt." />
</Products>
我想查询搜索词的 ProductName 和 Content 属性值。
这是我的查询表达式:
var results = from node in _xDoc.Descendants("Item")
where node.Attribute("Content").Value.Contains(searchTerm)
where node.Attribute("ProductName").Value.Contains(searchTerm)
select new SearchModel()
{
Name = node.Attribute("ProductName").Value,
Url = "the url",
Group = "Products"
};
如果我的搜索词是“衬衫”,我应该返回“高尔夫衬衫”和“T 恤”,但我什么也得不到。我认为这是因为双重“where”子句正在创建和“and”表达式,我需要一个“or”表达式。如果我删除其中一个“where”子句,它就会起作用。
我试着放一个“||” 在第一个“where”子句之后,但这会产生错误。
如何为 Linq-to-Xml 实现“或 where”子句?
谢谢。