using System.Collections.Generic;
using System.Collections;
using System.Collections.Generic;
using System.Data.DataSetExtensions;
using System.Text.RegularExpressions;
using System.Xml.Serialization;
using System.Globalization;
using System.Diagnostics;
using System.Collections.Concurrent;
public static void Main()
string input = @"<Data_Speed>
<Coverage ID=""Dense_Urban"">
<DownLoad_Speed>10</DownLoad_Speed>
<Upload_Speed>20</Upload_Speed>
<DownLoad_Speed>30</DownLoad_Speed>
<Upload_Speed>40</Upload_Speed>
<Coverage ID=""SubUrban"">
<DownLoad_Speed>50</DownLoad_Speed>
<Upload_Speed>60</Upload_Speed>
<Coverage ID=""Dense_Urban"">
<DownLoad_Speed>11</DownLoad_Speed>
<Upload_Speed>12</Upload_Speed>
<DownLoad_Speed>13</DownLoad_Speed>
<Upload_Speed>14</Upload_Speed>
<Coverage ID=""SubUrban"">
<DownLoad_Speed>15</DownLoad_Speed>
<Upload_Speed>16</Upload_Speed>
<Coverage ID=""Dense_Urban"">
<DownLoad_Speed>30</DownLoad_Speed>
<Upload_Speed>42</Upload_Speed>
<DownLoad_Speed>50</DownLoad_Speed>
<Upload_Speed>34</Upload_Speed>
<Coverage ID=""SubUrban"">
<DownLoad_Speed>45</DownLoad_Speed>
<Upload_Speed>46</Upload_Speed>
<DownLoad_Speed>47</DownLoad_Speed>
<Upload_Speed>48</Upload_Speed>
<Coverage ID=""Variable"">
<DownLoad_Speed>15</DownLoad_Speed>
<Upload_Speed>52</Upload_Speed>
<Coverage ID=""Outdoor"">
<DownLoad_Speed>25</DownLoad_Speed>
<Upload_Speed>22</Upload_Speed>
XDocument doc = XDocument.Parse(input);
var result = doc.Descendants("Tech")
.Where(x=>x.Attribute("ID") != null && x.Attribute("ID").Value == "UMTS900")
.Where(x=>x.Attribute("ID") != null && x.Attribute("ID").Value == "Dense_Urban")
Dowload_Speed = (string)x.Element("DownLoad_Speed"),
Upload_Speed = (string)x.Element("Upload_Speed")
Console.WriteLine("{0} - {1}",r.Dowload_Speed, r.Upload_Speed);