LINQifying 我的代码是否值得访问闭包中的 foreach 变量?

2023-11-29

让人想起去年滚石乐队盗版现场录音的标题,Resharper 比我以往任何时候都更加敏锐;当我让它检查我的代码时,它告诉我有关闭包的信息:

1)“循环:

        foreach (var item in PlatypiIds)
        {
            var query = db.Table<Locations>().Where(l => l.PlatypusId == item).
                Where(l=> l.SentTimeUTC >= EarliestToShow).
                Where(l=> l.SentTimeUTC <= LatestToShow).
                OrderBy(l => l.SentTimeUTC);

            if (query != null)
            {
                foreach (var q in query)
                {
                    listLocs.Add(q);
                }
            }
        }

...可以转换成 LINQ 表达式:

listLocs.AddRange(from item in PlatypiIds select db.Table<Locations>().Where(l => l.PlatypusId == item).Where(l => l.SentTimeUTC >= EarliestToShow).Where(l => l.SentTimeUTC <= LatestToShow).OrderBy(l => l.SentTimeUTC) into query 
where query != null from q in query select q);"

...但后来 Resharper 后来告诉我有关“新的和改进的”代码:“在闭包中访问 foreach 变量。使用不同版本的编译器编译时可能会有不同的行为”

那么使用不同版本的编译器进行编译的可能性有哪些呢?我的意思是,我不会从版本角度倒退,例如从 VS2012 到 VS2010...???

2)在这些方面:

            if (db != null)
                db.Insert(new PlatypiRequested()

...这段代码:

    using (var db = new SQLiteConnection(SQLitePath))
    {
        db.CreateTable<PlatypiRequested>();

        db.RunInTransaction(() =>
        {
            if (db != null)
                db.Insert(new PlatypiRequested()
                              {
                                  PlatypusId = PlatypusId,
                                  PlatypusName = PlatypusName,
                                  InvitationSentLocal = invitationSentLocal
                              });
        });
    }

...Resharper 通知我,“访问已处理的关闭”

这是什么意思?我该怎么办?


这里有两个不同的问题,一个是 LINQ 与 foreach,另一个是不同的情况。

关于当代码是 LINQified 时 ReSharper 通知您“访问闭包中的 foreach 变量...” - 我只是从不冒险,并将其保留为 foreach 循环。在大多数情况下,它也更具可读性和可维护性,而且实际上,缩短代码并不是什么大问题。

关于第二种情况 - 你需要失去using声明,自db对象将被过早处置。您应该将其关闭并以“老式时尚”方式将其丢弃在RunInTransactionlambda 表达式,位于其末尾。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LINQifying 我的代码是否值得访问闭包中的 foreach 变量? 的相关文章

随机推荐

  • 在 PHP 中使用正则表达式找出子域

    抱歉 如果这个挑战太小 不适合作为堆栈溢出问题 但我对正则表达式有点陌生 我的问题是 对于下面的所有示例返回字符串 token 的正则表达式是什么 token domain com token domain com token domain
  • 如何删除多页文档中的空白页?

    编辑 添加了一个答案 因为编辑太长 参见答案2 继以前关于文档合并的帖子我最终得到了一个工作脚本 感谢 Henrique 但我仍然有一个小问题 最终的 合并 文档有时包含我想删除的空白页面 取决于其他文档内容 我找不到简单的方法来做到这一点
  • 如何使用 ggrepel (或其他方式)在 ggalluvial 中对齐和标记地层

    我有一些使用生成的冲积地块ggalluvial in R 下面的代码示例产生的结果接近我想要实现的目标 例如 library ggalluvial par mar c 1 1 1 1 12 cex 0 6 xpd NA generate s
  • VBScript - 从标准输出捕获输出

    我知道这已经在另一个问题中得到了回答 但我根本不明白它是如何完成的 我试图将命令行程序 Aria2 下载器 的输出获取到 HTA 脚本中 以便可以对其进行解析 并且可以获取下载百分比 文件大小等并将其动态更新到 DIV 中 这是我已经调整并
  • Windows服务中的定时器队列

    对于 Windows 服务 我需要一个计时器来定期执行特定任务 当然 有许多选项似乎优于计时器 多线程 直接从服务的主线程调用方法 但在这种特定情况下它们都有其缺点 然而 由于显而易见的原因 如果没有 GUI 的消息队列 SetTimer
  • ReplicaSet 失败并显示无效:spec.template.metadata.labels

    为了我的学习目的 我正在尝试对replicaSet进行一些研究 我能够使用 matchLabels 成功创建副本集 为了测试 matchExpression 选择器 我首先创建了一个 pod 然后创建了一个新的副本集 以测试副本集是否能够检
  • UIWebview 缩放 PDF 和大 .图像缩放 默认 IOS

    我在用UIWebView加载具有缩放功能的 PDF 和图像 为此我检查了webView scalesPageToFit属性真实且工作正常 但我的问题是 当我加载大图像 2496 3507 时 它默认显示缩放 我不希望尺寸适合 为了克服这个问
  • 链接器命令失败,退出代码为 1;架构armv7s的未定义符号。

    这是我第一次尝试将二进制文件 iOS 应用程序的新版本 而不是全新的应用程序 上传到 iTunes 商店 当我尝试创建存档时 我收到三个Apple Mach o linker errors 在问题导航器中显示为红色 这是显示的内容 ld w
  • jQuery Masonry 与 jQuery UI Sortable 冲突

    使用 Masonry 时 jQuery UI Sortable 不起作用 知道如何避免这种冲突吗 任何帮助 将不胜感激 我想我也有类似的问题 我通过简单地调用代码中用于设置可排序元素的砌体来修复它 可能有更好的方法 我不确定 functio
  • 垂直对齐浮动 DIV

    我正在创建的网站的一部分如下 div div div div
  • asp:按钮点击事件没有被触发

    我正在 asp 表中动态添加行 在表的每一行中 我还包括一个具有 SelectProduct Click 事件的按钮 问题是 即使我注册了单击事件 该事件也没有被触发 按钮是这样添加的 btnSelect new Button btnSel
  • Delphi:如何使用 DynArraySetLength 设置 RTTI 访问的动态数组的长度?

    我想设置动态数组的长度 如建议的那样这个帖子 我有两个类 TMyClass 和相关的 TChildClass 定义为 TChildClass class private FField1 string FField2 string end T
  • 为什么通过 Homebrew 安装的 Python 不包含 Tkinter [重复]

    这个问题在这里已经有答案了 我已经通过 Homebrew 在我的 Mac 上安装了 Python brew install python 之后我检查了我的Python版本为2 7 11 然后我尝试执行 import Tkinter 我收到以
  • 如何在Spring中按条件提供默认bean?

    我想通过自定义 jar 提供默认 bean 仅当用户实现特定的abstract应该跳过默认 bean 注入 以下设置已经可以正常工作 除了一件事 default有线类有null 我可能会缺少什么 Configration public cl
  • 如何强制用户在启动 Access 2007 时处理安全警告?

    当用户启动具有宏和 vba 的 Access 2007 数据库时 会显示安全警告 我希望用户处理此警告 因此如果未启用内容 用户应该无法使用数据库 现在我使用一个名为AutoExec 打开一个像菜单一样工作的表单 并且该宏在用户处理安全警告
  • 如何判断 DateTime.Now() 是否在不同日期时间之后的一天

    我在 flutter 上运行这个 但我想这可能是一个更普遍的问题 我正在首选项中保存日期时间 我希望能够判断是否DateTime now is on 至少一天后最后保存的日期时间 即 pseudocode lastDailyCheck 20
  • 使用 MyFaces Tomahawk + ​​JSF 2.0 上传文件

    我目前正在使用 Tomahawk MyFaces 将文件上传到我的服务器 我一步步按照一些说明进行操作 一切似乎都正常 但我没有将文件保存到数据库中 我没有看到任何错误 我只是在 Eclipse 控制台中看到一些警告 有人可以看一下吗 这就
  • 如何在 gradle war 中排除目录及其内容

    我在用gradlewar 插件 我试图排除里面的一些目录WEB INF打包战争时的目录 但排除似乎不起作用 这就是我所拥有的 war webInf from src main config exclude metadata 对此有什么解决办
  • Java UserTransaction 中的多个数据库连接

    static void clean throws Exception final UserTransaction tx InitialContext doLookup UserTransaction tx begin try final D
  • LINQifying 我的代码是否值得访问闭包中的 foreach 变量?

    让人想起去年滚石乐队盗版现场录音的标题 Resharper 比我以往任何时候都更加敏锐 当我让它检查我的代码时 它告诉我有关闭包的信息 1 循环 foreach var item in PlatypiIds var query db Tab