我需要根据查询字符串值创建xml文件。
我的xml文件:
<Products>
<Product>
<Name>Name</Name>
<Category>Books</Category>
<SubCategory>Drama</SubCategory>
</Product>
<Product>
<Name>Name</Name>
<Category>Books</Category>
<SubCategory>Action</SubCategory>
</Product>
<Product>
<Name>Name</Name>
<Category>Paper</Category>
<SubCategory></SubCategory>
</Product>
因此,如果我输入?filter=Books,Paper
,我需要选择Product
其中Category
包含来自查询字符串的值。
然后,如果我输入?filter=Books,Paper&filter2=Drama
,我仍然需要Product
Category
包含filter1
,但Product
元素包含SubCategory
,其中包含filter2
1}}我需要选择那些。
所以使用:?filter=Books,Paper&filter2=Drama
我需要得到如下所示的xml:
<Products>
<Product>
<Name>Name</Name>
<Category>Books</Category>
<SubCategory>Drama</SubCategory>
</Product>
<Product>
<Name>Name</Name>
<Category>Paper</Category>
<SubCategory></SubCategory>
</Product>
</Products>
某些产品可能还有空SubCategory
元素。我不知道这是否重要。
我的查询如下:
var items = from el in SimpleStreamAxis(esysPath, "Product")
where filter.Contains(el.Element("Category").Value.Trim())
where filter1.Contains(el.Element("SubCategory").Value.Trim())
select new
{
ProductID = el.Element("ID").Value,
Name = el.Element("Name").Value,
Price = el.Element("Price").Value,
Picture = el.Element("Picture").Value
};
这是选择Product
包含filter1
的所有SubCategory
元素。
所以任何人都可以指出我如何编写此查询的正确方向。
感谢。
答案 0 :(得分:0)
这应该让您开始朝着正确的方向前进,它会找到Category
元素为Book
或Paper
List<string> categories = new List<string() {"Book", "Paper"};
XDocument doc = XDocument.Parse("Your xml string");
var products = doc.Descendants("Product")
.Where(el => categories.Contains(el.Element("Category").Value));