У меня есть xml-файл с 3 частями данных на элемент: productName, productCode и productPrice. Количество элементов в XML-файле составляет около 7000.Как ускорить этот код выбора Linq?
Пользователь может найти продукт по названию, набрав «красную рубашку», например, в текстовом поле. Мой код делает эти задачи:
разметить поиска текста и собирающие ProductName в том, что содержит все слова для поиска.
порядок отбор по ProductCode
выбрать только для отображения Productname и productPrice (не ProductCode, который используется только для OrderBy)
var products = from d in xElem.Descendants(fileName) where textBox1.Text.ToLower().Split(' ').All(t => d.Element(productName).Value.ToLower().Contains(t)) orderby d.Element(productCode).Value ascending select new { Price = (double.Parse(d.Element(productPrice).Value)).ToString(numberFormat), Name = d.Element(Name).Value };
Где в этом коде являются узким местом (узлами)? И как их удалить? Я делаю этот Linq каждый раз, когда вводится нажатие клавиши в текстовом поле, что означает обновление результата в реальном времени (по сравнению с ожиданием клавиши Enter). Спасибо.
Вы пробовали профилировать этот код? Каков был результат? – dasblinkenlight
Это всегда будет медленно делать новый поиск при каждом нажатии клавиши, хотя Linq на XML, вероятно, медленнее, чем sql-запрос в индексированной таблице. Как ускорить Linq? Не используйте его. Все абстракции медленнее. – Sam
Я никогда не делал профилирования. Я использую Visual Studio 2010. Будет проверять, доступна ли эта функция. – user763554