gpt4 book ai didi

c# - 并行 plinq 与 linq

转载 作者:行者123 更新时间:2023-11-30 14:27:22 25 4
gpt4 key购买 nike

我有一个代码块

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 查询。有人可以帮忙吗?

最佳答案

如果您按照 db 的建议访问数据库,那么:

  • 非并行代码将被转换为 SQL 查询并由 DBMS 直接执行。
    这是快速。特别是如果您在 CustomerName 上有一个索引,因为它只能扫描该索引(否则您最终将进行全表扫描,但它可能仍然 足够快)。

  • 第二个将:

    • 下载 整个ProductReceives 表。所有这一切。
    • 然后它将为每一行创建一个对象。
    • 然后它将这些对象提供给您的并行检查。

    这个比第一个解决方案慢很多

您将得到一个 NullReferenceException,因为这些行之一有一个 NULL CustomerName。所以你最终调用了 ((string)null).ToLower()

第一种情况下不会发生错误,因为 DMBS 会自行过滤掉错误。

关于c# - 并行 plinq 与 linq,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33052728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com