Мне нужно создать 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
мне нужно выбрать только те.
Итак, с: ?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
.
Так что кто-нибудь может указать мне правильное направление, как написать этот запрос.
Спасибо.