Оптимизация linq-запроса - C#
Формулировка задачи:
Есть
XML
и написанный мной
Возможно ли как нибудь оптимизировать его, чтобы в зависимости от значения Name у элемента коллекции, бралось значение CarsCount у соответствующей улицы? Грубо говоря, чтобы метод работал для разных улиц.
public ObservableCollection<StreetViewModel> Streets { get; set; }
public StreetsViewModel()
{
Streets = new ObservableCollection<StreetViewModel>();
Streets.Add(new StreetViewModel(new Street
{
Name = "Moskovski prospect",
CarsVolume = GetNum(),
PathStr = "M468.37501,310.4375 C459.94251,299.92425 428.32491,259.14981 422.5,247.5 422.553,247.27033 414.42113,143.10857 413,123 411.8339,106.5 401.50101,6.75 401,2.5" }));
Streets.Add(new StreetViewModel(new Street
{
Name = "Bylavar pobedy",
CarsVolume = 50,
PathStr = "M295,62.749756 C304,68.498917 305.57513,71.87302 315,72.124348 329,72.49768 396.16667,65.665787 407.5,64.499456"
}));<streets> <street id="1" Hour1="100" Hour2="140" Hour3="70"> <name>Moskovski prospect</name> </street> <street id="2" Hour1="100" Hour2="140" Hour3="70"> <name>Bylvar pobedy</name> </street> </streets>
public int GetNum()
{
int i = 0;
string fileName = "StreetsBase.xml";
XDocument doc = XDocument.Load(fileName);
IEnumerable<XElement> streets = from t in doc.Root.Elements("street")
where t.Element("name").Value == "Moskovski prospect"
let carscount = t.Attribute("Hour1").Value
select t;
foreach (XElement t in streets)
{
i = Convert.ToInt32(t.Attribute("Hour1").Value);
}
return i;
}Решение задачи: «Оптимизация linq-запроса»
textual
Листинг программы
Dictionary<string, int> d = new Dictionary<string, int>();
foreach (var item in query)
{
d.Add(item.Name, item.carsCount);
}