[XML] Вывод результатов поиска. Подскажите ошибку - C#

Узнай цену своей работы

Формулировка задачи:

Искать можно по тексту и по типу (входящие-исходящие-все).
        {
            txtHistory.Clear();
            listView1.Clear();
            string patch = @"C:/History/ExampleHistory.xml";
            XElement history;
            try
            {
                history = XElement.Load(patch);
            }
            catch(FileNotFoundException ex)
            {
                MessageBox.Show(ex.Message, "Error!");
                this.Close();
                return;
            }
            XElement[] elements = history.Elements("Message").ToArray();
            switch (cmbTypeOfSearch.SelectedIndex)
            {
                case 0:
                    {
                        var filtred = from el in elements
                                      where el.Element("message").Value.ToLower().Contains(txtSearch.Text.ToLower())
                                      select el;
 
                        foreach (var el in filtred)
                        {
                            foreach (XElement msg in el.Elements())
                            {
                                string res = string.Format("{0}",
                                    msg.Value);
                                txtHistory.AppendText(res + Environment.NewLine);
                                listView1.Items.Add(res);
                            }
                        }
 
                        break;
                    }
                case 1:
                        {
                            var filtredbytype = from el in elements
                                                where el.Attribute("msgType").Value == "from"
                                                select el;
 
                            var filtred = from el in filtredbytype
                                          where el.Element("message").Value.ToLower().Contains(txtSearch.Text.ToLower())
                                          select el;
                            foreach (var el in filtred)
                            {
                                foreach (XElement msg in el.Elements())
                                {
                                    string res = string.Format("<- {0}",
                                        msg.Value);
                                    txtHistory.AppendText(res + Environment.NewLine);
                                    listView1.Items.Add(res);
                                }
                            }
                            break;
                        }
                case 2:
                        {
                            var filtredbytype = from el in elements
                                                where el.Attribute("msgType").Value == "to"
                                                select el;
 
                            var filtred = from el in filtredbytype
                                          where el.Element("message").Value.ToLower().Contains(txtSearch.Text.ToLower())
                                          select el;
 
                            foreach (var el in filtred)
                            {
                                foreach (XElement msg in el.Elements())
                                {
                                    string res = string.Format("-> {0}",
                                        msg.Value);
                                    txtHistory.AppendText(res + Environment.NewLine);
                                    listView1.Items.Add(res);
                                }
                            }
                            break;
                        }
            }
        }
Проблема в том, что вместо такого результата:
-> Example 17.05.2015 6:42:14 TEST REST PEACE
Получается уж слишком дофига стрелок:
-> Example -> 17.05.2015 6:42:14 -> TEST REST PEACE
Структура XML-файла:
 
<?xml version="1.0" encoding="utf-8"?>
<Messages>
 <Message msgType="to">
    <usrSecond>Example</usrSecond>
    <date>17.05.2015 5:42:14</date>
    <message>test message</message>
  </Message>
  <Message msgType="to">
    <usrSecond>Example</usrSecond>
    <date>17.05.2015 6:42:14</date>
    <message>TEST REST PEACE</message>
  </Message>
</Messages>
P.S. Стрелки показывают, было ли сообщение отправлено, или, напротив, получено.

Решение задачи: «[XML] Вывод результатов поиска. Подскажите ошибку»

textual
Листинг программы
foreach (var el in filtred)
{
    bool first = true;
    foreach (XElement msg in el.Elements())
    {
        string res = msg.Value;
        if (first) {
            res = string.Format("-> {0}", msg.Value);
            first = false;
        }
        txtHistory.AppendText(res + Environment.NewLine);
        listView1.Items.Add(res);
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.5 из 5
Похожие ответы