Я сделал свой поиск и не смог найти решение проблемы, которая у меня есть.
Я немного новичок в С#.net.
Вот моя проблема. Я пытаюсь динамически фильтровать xelement.
Количество атрибутов и значение атрибутов неизвестны и будут зависеть от какой-либо другой процедуры/процесса.
это мое имя атрибута для фильтрации, может быть один или несколько атрибутов для фильтрации.
string[] param = new string[] { "techcode", "productgroup", "photolayer" }
мой xml-файл имеет такую форму:
<?xml version="1.0" encoding="utf-8"?>
<threads>
<thread techcode="sometech" productgroup="pgroup"
photolayer="player" biasewma="-0.05" />
</threads>
Я могу успешно фильтровать, если я жестко запрограммировал что-то вроде этого
IEnumerable<XElement> singlethread = (from el in apcxmlstate.Elements("thread")
where
(string)el.Attribute("techcode") == somevalue
&& (string)el.Attribute("productgroup") == somevalue
&& (string)el.Attribute("photolayer") == somevalue
select el);
Однако это не то, что я хочу, потому что я не буду знать, какой именно атрибут я хочу отфильтровать. Он будет генерироваться динамически.
Например, во время выполнения атрибутом, который я хочу отфильтровать, является только технический код и группа продуктов. Любая добрая душа поможет мне сделать предложение.
query.Where
каждый раз исходному запросу 29.07.2013IEnumerable<XElement> singlethread = apcxmlstate.Elements("thread"); foreach (var name in param) { singlethread = singlethread.Where(t => (string)t.Attribute(name) == row[name].ToString()); } if (!singlethread.Any()) { // create new thread } else { //update thread }
, но он не создает его правильно 29.07.2013