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

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

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

Искать можно по тексту и по типу (входящие-исходящие-все).
Листинг программы
  1. {
  2. txtHistory.Clear();
  3. listView1.Clear();
  4. string patch = @"C:/History/ExampleHistory.xml";
  5. XElement history;
  6. try
  7. {
  8. history = XElement.Load(patch);
  9. }
  10. catch(FileNotFoundException ex)
  11. {
  12. MessageBox.Show(ex.Message, "Error!");
  13. this.Close();
  14. return;
  15. }
  16. XElement[] elements = history.Elements("Message").ToArray();
  17. switch (cmbTypeOfSearch.SelectedIndex)
  18. {
  19. case 0:
  20. {
  21. var filtred = from el in elements
  22. where el.Element("message").Value.ToLower().Contains(txtSearch.Text.ToLower())
  23. select el;
  24. foreach (var el in filtred)
  25. {
  26. foreach (XElement msg in el.Elements())
  27. {
  28. string res = string.Format("{0}",
  29. msg.Value);
  30. txtHistory.AppendText(res + Environment.NewLine);
  31. listView1.Items.Add(res);
  32. }
  33. }
  34. break;
  35. }
  36. case 1:
  37. {
  38. var filtredbytype = from el in elements
  39. where el.Attribute("msgType").Value == "from"
  40. select el;
  41. var filtred = from el in filtredbytype
  42. where el.Element("message").Value.ToLower().Contains(txtSearch.Text.ToLower())
  43. select el;
  44. foreach (var el in filtred)
  45. {
  46. foreach (XElement msg in el.Elements())
  47. {
  48. string res = string.Format("<- {0}",
  49. msg.Value);
  50. txtHistory.AppendText(res + Environment.NewLine);
  51. listView1.Items.Add(res);
  52. }
  53. }
  54. break;
  55. }
  56. case 2:
  57. {
  58. var filtredbytype = from el in elements
  59. where el.Attribute("msgType").Value == "to"
  60. select el;
  61. var filtred = from el in filtredbytype
  62. where el.Element("message").Value.ToLower().Contains(txtSearch.Text.ToLower())
  63. select el;
  64. foreach (var el in filtred)
  65. {
  66. foreach (XElement msg in el.Elements())
  67. {
  68. string res = string.Format("-> {0}",
  69. msg.Value);
  70. txtHistory.AppendText(res + Environment.NewLine);
  71. listView1.Items.Add(res);
  72. }
  73. }
  74. break;
  75. }
  76. }
  77. }
Проблема в том, что вместо такого результата:
-> Example 17.05.2015 6:42:14 TEST REST PEACE
Получается уж слишком дофига стрелок:
-> Example -> 17.05.2015 6:42:14 -> TEST REST PEACE
Структура XML-файла:
Листинг программы
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Messages>
  3. <Message msgType="to">
  4. <usrSecond>Example</usrSecond>
  5. <date>17.05.2015 5:42:14</date>
  6. <message>test message</message>
  7. </Message>
  8. <Message msgType="to">
  9. <usrSecond>Example</usrSecond>
  10. <date>17.05.2015 6:42:14</date>
  11. <message>TEST REST PEACE</message>
  12. </Message>
  13. </Messages>
P.S. Стрелки показывают, было ли сообщение отправлено, или, напротив, получено.

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

textual
Листинг программы
  1. foreach (var el in filtred)
  2. {
  3.     bool first = true;
  4.     foreach (XElement msg in el.Elements())
  5.     {
  6.         string res = msg.Value;
  7.         if (first) {
  8.             res = string.Format("-> {0}", msg.Value);
  9.             first = false;
  10.         }
  11.         txtHistory.AppendText(res + Environment.NewLine);
  12.         listView1.Items.Add(res);
  13.     }
  14. }

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


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

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

12   голосов , оценка 3.5 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы