![](/img/trans.png)
[英]Application hangs using PLINQ AsParallel(). No problems with LINQ
[英]asparallel plinq vs linq
我有一个代码块
var result = db.ProductReceives.Where(x => x.CustomerName.ToLower().Contains(searchTxt)).ToList();
工作正常,但当我写相同的查询
var result = db.ProductReceives.AsParallel().Where(x => x.CustomerName.ToLower().Contains(searchTxt)).ToList();
它显示错误消息对象引用未设置为对象的实例。
我想执行查询AsParallel query.can一些帮助吗?
如果按db
建议点击数据库,则:
非并行代码将转换为SQL查询并由DBMS直接执行。
这很快 。 特别是如果你有一个CustomerName
的索引,因为它只能扫描那个索引(否则你最终会得到一个全表扫描,但它可能仍然足够快)。
第二个将:
ProductReceives
表。 所有的。 这将是比第一个解决方案慢得多 。
您将获得NullReferenceException
因为其中一行具有NULL
CustomerName
。 所以你最终调用((string)null).ToLower()
。
在第一种情况下不会发生错误,因为DMBS将负责自行过滤。
也许你应该在调用ToLower之前检查客户名是否为null。
db.Tv_ProductReceive.AsParallel().Where(i =>i.CustomerName != null && i.CustomerName.ToLower().Contains(searchTxt)).ToList();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.