【发布时间】:2012-02-11 20:59:48
【问题描述】:
我有一个 xml 文件,每个项目包含 3 条数据:productName、productCode 和 productPrice。 xml 文件中的项目数约为 7,000。
用户可以通过在文本框中输入“red shirt”来按名称搜索产品。 我的代码执行以下任务:
标记搜索文本并收集包含所有搜索词的产品名称。
按产品代码排序
选择仅显示 productName 和 productPrice(不是仅用于 orderby 的 productCode)
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 键)。 谢谢。
【问题讨论】:
-
您是否尝试分析此代码?结果如何?
-
在每次击键时进行全新的搜索总是会很慢,尽管 XML 上的 Linq 可能比索引表上的 sql 查询慢。如何加快Linq?不要使用它。所有的抽象都比较慢。
-
我从未做过任何分析。我正在使用 Visual Studio 2010。将检查此功能是否可用。
标签: xml linq select sql-order-by where