Оптимизация linq-запроса - C#

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

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

Есть
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"
            }));
XML
<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;
        }
Возможно ли как нибудь оптимизировать его, чтобы в зависимости от значения Name у элемента коллекции, бралось значение CarsCount у соответствующей улицы? Грубо говоря, чтобы метод работал для разных улиц.

Решение задачи: «Оптимизация linq-запроса»

textual
Листинг программы
Dictionary<string, int> d = new Dictionary<string, int>();
foreach (var item in query)
{
d.Add(item.Name, item.carsCount);
}

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


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

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

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