#c# #xml #linq
#c# #xml #linq
Вопрос:
у меня есть запрос LINQ для моего XML-файла, и он выглядит следующим образом
IEnumerable<XElement> c = from cli in xEl.Elements(ns "client")
where cli.Element(ns "ID").Value == (((Client)cComboBox.SelectedItem).Id "")
select cli;
это работает нормально..
Затем я хочу повторить эти данные, поэтому я делаю это
foreach (XElement el in c)
{
}
мой XML-файл выглядит следующим образом
<client>
<ID>1</ID>
<name>Andrej</name>
с помощью этой итерации я хочу извлечь значения клиентов (id -> 1, name -> Andrej)
я предполагал поместить el.Element("name").Value
в середину цикла, но это не работает … да, и кстати: я делаю это на C #..
Что мне делать?
кстати, 2: как вы можете видеть, я новичок в linq, поэтому, думаю, с этим я сбился с пути…
Любая помощь была бы оценена!! TNX!
Комментарии:
1. извините, просто для ясности, вы хотите получить элементы, которые имеют id = 1 или id => 1?
Ответ №1:
Если я использую этот код:
public void Run()
{
string fileToLoad = this.GetType().Name ".xml";
XElement root = XElement.Load(fileToLoad);
var selected = from cli in root.Elements("client")
where cli.Element("ID").Value == "1"
select cli;
System.Console.WriteLine("Selected:");
foreach (var d in selected)
Console.WriteLine("{0}", d.ToString());
System.Console.WriteLine("nitems:");
foreach (var d in selected)
{
Console.WriteLine("id: {0}", d.Element("ID"));
}
}
И эти исходные данные:
<root>
<client>
<ID>1</ID>
<name>Andrej</name>
</client>
<client>
<ID>2</ID>
<name>William</name>
</client>
<client>
<ID>3</ID>
<name>Kate</name>
</client>
</root>
Затем… Я получаю этот результат:
Selected:
<client>
<ID>1</ID>
<name>Andrej</name>
</client>
items:
id: <ID>1</ID>
Ответ №2:
вы могли бы сделать это в одной инструкции. Я перефразирую ваше утверждение. На самом деле меняется только выбор.
var nameIdList = (from cli in client
where cli.ID == ID
select new { id=cli.ID, name=cli.name }).ToList();
Комментарии:
1. Также у меня возникла проблема, когда у меня были XmlNodes и мне нужно было преобразовать в XmlElements. Вот хорошая ссылка, показывающая, как добавить это в ваш класс расширений. blogs.msdn.com/b/ericwhite/archive/2008/12/22 /…