Guest User

Untitled

a guest
Jan 16th, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.22 KB | None | 0 0
  1. Runner run = new Runner();
  2. string filePath = "runners.xml"; //path
  3. XDocument xDoc = XDocument.Load(filePath);
  4. string userSelect = name;
  5.  
  6.  
  7.  
  8. var averageAddDistancequery = xDoc.Descendants("User").Where(w => (string)w.Element("Name") == user).Select(s => new
  9. {
  10. add = s.Elements("Attempts").Where(w => (string)w.Element("Place").Value == "Paris").Select(t => t.Element("Distance").Value)
  11. }).ToList();
  12.  
  13. if (averageAddDistancequery[0].add.Count() > 0)
  14. {
  15. var aa = averageAddDistancequery[0].add.Average(a => float.Parse(a));
  16. run.averageDistance = aa.ToString();
  17. }
  18. else
  19. {
  20. // nothing
  21. }
  22.  
  23. var averageAdd2Distancequery = xDoc.Descendants("User").Where(w => (string)w.Element("Name") == userSelector).Select(s => new
  24. {
  25. add = s.Elements("Attempts").Where(w => (string)w.Element("Place").Value == "Madrid").Select(t => t.Element("Distance").Value)
  26. }).ToList();
  27.  
  28. if (averageAdd2Distancequery[0].add.Count() > 0)
  29. {
  30. var aa = averageAdd2DistanceSubquery[0].add.Average(a => float.Parse(a));
  31. run.averageDistance2 = aa.ToString();
  32. }
  33. else
  34. {
  35. // nothing
  36. }
  37.  
  38.  
  39.  
  40. xmlDoc.DocumentElement.SetAttribute("searching", user);
  41. XmlNodeList tests = xmlDoc.SelectNodes("//User[Name =/*/@searching]/Attempts");
  42. listBox1.Items.Clear();
  43. listBox1.Items.Add("Runners Name: " + user);
  44. listBox1.Items.Add("Overall Distance in Paris: " + run.averageAdd);
  45. listBox1.Items.Add("Overall Distance in Madrid: " + run.averageSub);
  46.  
  47. Users>
  48. <User>
  49. <Name>David</Name>
  50. <Attempts>
  51. <Place>Paris</Place>
  52. <Date>3/29/2012</Date>
  53. <Distance>100</Distance>
  54. </Attempts>
  55. <Attempts>
  56. <Place>Madrid</Place>
  57. <Date>7/28/2012</Date>
  58. <Distance>100</Distance>
  59. </Attempts>
  60. <Attempts>
  61. <Place>Paris</Place>
  62. <Date>8/19/2012</Date>
  63. <Distance>60</Distance>
  64. </Attempts>
  65. <Attempts>
  66. <Place>Madrid</Place>
  67. <Date>9/29/2012</Date>
  68. <Distance>200</Distance>
  69. </Attempts>
  70. </User>
  71. <User>
  72. <Name>Lenny</Name>
  73. <Attempts>
  74. <Place>Paris</Place>
  75. <Date>9/29/2012</Date>
  76. <Distance>130</Distance>
  77. </Attempts>
  78. </User>
  79. </Users>
  80.  
  81. var userElement = xDox.Descendants("User")
  82. .SingleOrDefault(u => u.Element("Name").Value == "David");
  83.  
  84. if (userElement != null)
  85. {
  86. var result = userElement.Descendants("Attempts")
  87. .Select(a => new
  88. {
  89. Place = a.Element("Place").Value,
  90. Date = DateTime.Parse(a.Element("Date").Value),
  91. Distance = int.Parse(a.Element("Distance").Value)
  92. })
  93.  
  94. .Where(a => a.Date >= DateTime.Parse("3/29/2012")
  95. && a.Date <= DateTime.Parse("8/29/2012"))
  96.  
  97. .GroupBy(a => a.Place)
  98. .Select(g => new {Place = g.Key, Avg = g.Average(x => x.Distance)});
  99. }
  100.  
  101. XElement x = XElement.Load("In.xml");
  102. IFormatProvider f = new System.Globalization.CultureInfo("en-US");
  103.  
  104. DateTime bdate = DateTime.Parse("3/29/2012", f);
  105. DateTime edate = DateTime.Parse("8/29/2012", f);
  106. string username = "David";
  107.  
  108. var info = x.Elements("User")
  109. .Where(u => u.Element("Name").Value == username)
  110. .Select(u => new
  111. {
  112. Name = u.Element("Name").Value, //user name
  113. AverageAttempts = u.Elements("Attempts") //select user's attempts
  114. .Where(a => //filter by dates
  115. {
  116. DateTime d = DateTime.Parse(a.Element("Date").Value, f);
  117. return d >= bdate && d <= edate;
  118. })
  119. .GroupBy(a => a.Element("Place").Value) //group by place
  120. .Select(g => new // create summary info by place
  121. {
  122. Place = g.Key, //place
  123. BeginDate = g.Elements("Date")
  124. .Select(d => DateTime.Parse(d.Value, f))
  125. .Min(), //min date, i.e. first attempt
  126. EndDate = g.Elements("Date")
  127. .Select(d => DateTime.Parse(d.Value, f))
  128. .Max(), //max date, i.e. last attempt
  129. Distance = g.Elements("Distance")//average distance
  130. .Average(d => decimal.Parse(d.Value))
  131. })
  132. })
  133. .FirstOrDefault();
  134.  
  135. if(info!=null)
  136. {
  137. Console.WriteLine(info.Name);
  138. foreach (var aa in info.AverageAttempts)
  139. {
  140. Console.WriteLine(string.Format("{0} [{1} - {2}]:t{3}",
  141. aa.Place,
  142. aa.BeginDate,
  143. aa.EndDate,
  144. aa.Distance));
  145. }
  146. }
  147.  
  148. XElement root = XElement.Load(file);
  149. XElement david = root.XPathElement("//User[Name={0}]", "David");
  150. XElement[] attempts = david
  151. .XPath("Attempts[Date>={0} and Date<={1}]",
  152. new DateTime(2012, 3, 29), new DateTime(2012, 8, 29))
  153. .ToArray();
Add Comment
Please, Sign In to add comment