将自定义方法集成到 LINQ to Entities 查询中

2023-12-19

我有一个自定义方法,可以对一组数据执行一些计算:

 private int GetPercentages(int OriginalValue, int TotalValue)
        {
            var newValue = (int)Math.Round(((decimal)OriginalValue / (decimal)TotalValue) * 100);

            return newValue;
         }

我需要能够在 LINQ to Entities 查询中运行此方法:

var data = from SurveyResponseModel in db.SurveyResponseModels
                       group SurveyResponseModel by SurveyResponseModel.MemberId into resultCount
                       select new ResultsViewModel()
                       {
                           MemberId = resultCount.Key,
                           PatientFollowUpResult = db.SurveyResponseModels.Count(r => r.PatientFollowUp),
                           PatientFollowUpResultPct = GetPercentages(db.SurveyResponseModels.Count(r => r.PatientFollowUp),totalResponsesResult),
                           ChangeCodingPracticeResult = db.SurveyResponseModels.Count(r => r.ChangeCodingPractice),
  };

我需要在查询内的大约 20 行以上运行它,因此将其内联似乎不是一个很好的选择。我知道它需要转换为 SQL 语法,但是我还能做其他类似的事情吗?


您需要创建一个 lambda 表达式来计算百分比,如下所示:

Expression<Func<int, int, int>> calcPercentage =
    (OriginalValue, TotalValue) => (int)Math.Round(((decimal)OriginalValue / (decimal)TotalValue) * 100);

并像这样使用它:

var data = from SurveyResponseModel in db.SurveyResponseModels.ToExpandable()
           group SurveyResponseModel by SurveyResponseModel.MemberId into resultCount
           select new ResultsViewModel()
           {
               MemberId = resultCount.Key,
               PatientFollowUpResult = db.SurveyResponseModels.Count(r => r.PatientFollowUp),
               PatientFollowUpResultPct = calcPercentage.Invoke(db.SurveyResponseModels.Count(r => r.PatientFollowUp), totalResponsesResult),
               ChangeCodingPracticeResult = db.SurveyResponseModels.Count(r => r.ChangeCodingPractice),
           };

有关在 LINQ 查询中调用函数的更多信息here http://tomasp.net/blog/linq-expand.aspx.

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

将自定义方法集成到 LINQ to Entities 查询中 的相关文章

随机推荐

  • Tensorflow:variable_scope 值错误

    这是我的代码如下 Tensorflow LSTM classification of 16x30 images from future import print function import tensorflow as tf from t
  • Microsoft 不推荐的实体框架自我跟踪实体

    在查看微软的网站时 我发现他们不再推荐使用自我跟踪实体 下面的每个链接都是 MS 资源 其中提到不要使用 STE 显示实体框架团队可用的模板 EF 设计器代码生成模板 http msdn microsoft com en US data J
  • 无法在 Spring Web 服务中反序列化 START_ARRAY 令牌之外的对象实例

    我目前在 Android 上连接到我的网络服务时遇到问题 我使用 jackson core databind annotation 2 2 4 和 Spring RESTWebService 如果我从浏览器访问 URL 我可以看到 JSON
  • 为什么(begin)在Scheme中有效?

    我在 Racket 和 Chez Scheme 中进行了测试 发现 begin 是可以接受的 同时 define a begin 不是 例如我得到的球拍 gt begin gt define a begin stdin 56 10 begi
  • 使用具有自定义连接对象的 EF 存储库?

    我被困在 EF 6 中 而且文档很少 现在一天都没有解决这个问题 我尝试在我们拥有的数据库存储库上使用 Code First 由于复杂的初始化我must使用我自己的工厂方法来初始化上下文子类 我must放入我自己的 sql 连接 或者创建我
  • 冒充标准用户

    我正在尝试创建一个正在运行的进程 该进程被提升为使用标准用户令牌重新启动资源管理器 我所做的是首先以管理员身份运行主进程 然后拍摄运行的快照 if Process32First hSnapshot pe32 do if wcsicmp pe
  • 控制 r Shiny 中传单中 popupImage 的大小

    我很难控制图像的大小popupImage 地图视图包 下面是一个可重现的闪亮示例 其中我有一个带有弹出窗口的标记 当我设置width 300 弹出窗口显示正确 但我想显示更大的图像 宽度 300 https i stack imgur co
  • Catalyst“SwiftUI.AccessibilityNode”不是已知的可序列化元素

    我使用 Xcode 11 1 创建了一个新的 iOS 单页应用程序 包括 SwiftUI 并启用了 Mac Catalyst 在我的 Mac 当然是 macOS 10 15 上运行新项目后 在窗口上点击一次后出现以下错误 2019 10 1
  • ASP-Net MVC5 Crystal Reports:系统找不到指定的路径

    有什么建议么 Code ReportDocument rpt new ReportDocument rpt Load Server MapPath CrystalReports P Order rpt TableLogOnInfo logo
  • 有没有关于 Spanned 和 Spannable 文本的示例

    我正在努力使用 EditText 和 Spannable 文本对象 这些天 我已经阅读了 API 文档大约十次 即使我不确定我是否理解正确 所以我正在寻找一种示例来展示如何使用 EditText 和 Spannable 由于您没有指定您无法
  • 如何修改Imagenet Caffe模型?

    我想修改 ImageNet caffe 模型 如下所述 由于时间网络的输入通道数与此不同 空间网络 20 vs 3 我们对 ImageNet 模型滤波器进行平均 先跨过通道一层 然后复制平均结果 20 时间网络的初始化 我的问题是如何才能达
  • 在 Google Chrome 中使用 MediaStream API 更改 FocusMode 不起作用

    在 Google Chrome 浏览器中 我能够使用以下方式实时获取连接的 USB 摄像头的实时信息 获取用户媒体 API 我有一个滑块可以更改亮度值 效果很好 我还希望 focusMode 从连续的 to manual 相机始终以连续对焦
  • 仅将 jetty url-pattern 与根目录匹配

    我只想用密码保护 Jetty Web 应用程序的上下文路径上的根目录 我的上下文路径是 MyApp 所以我需要密码才能访问 http localhost 8080 MyApp 但不适用于 http localhost 8080 MyApp
  • 如何在 TestCafe 中等待元素消失?

    当我需要等待元素变得可见时 我可以简单地将选择器作为函数调用 如下所示 await element with visibilityCheck true 但我怎样才能等待一个元素消失呢 要等待元素消失 您可以使用我们内置的断言等待机制 请参见
  • 找到将小数转换为整数的公共乘数的算法

    我有一个可能最多有 8 位小数的数字数组 我需要找到可以将它们相乘的最小公共数 以便它们都是整数 我需要这个 以便所有原始数字都可以乘以相同的比例 并由仅处理整数的密封系统进行处理 然后我可以检索结果并将它们除以公共乘数以获得相对结果 目前
  • geom_text 在所有方面写入所有数据

    我将 ggplot 与facet grid 一起使用 我想在每个方面指示每个方面的观察数量 我遵循许多网站上提供的示例 但是当我让它写任何东西时 它会在所有四个图上将所有四个观察数字写在彼此之上 这里是 geom text 图层命令 geo
  • macOS SwiftUI 表超过 10 列?

    我尝试添加 Group 技巧以在 Table 视图中获取超过 10 个元素 但是无法编译 就像有超过 10 个元素没有组一样 var body some View Table viewModel tableArrayOfStructs so
  • Mysql 连接器花费 50% 的时间在 com.mysql.jdbc.util.ReadAheadInputStream.fill()

    我正在分析使用 Spring Hibernate 和 mysql java connector 的应用程序 VisualVM显示超过50 的CPU时间花费在com myql jdbc utils ReadAheadInputStream f
  • Android sqlite 多线程

    我正在编写一个 Android 应用程序 使用sqlite 有多种活动和一项服务 我从多个线程使用数据库 它完美地工作在Android 2 X 但是一旦我运行它Android 3 X它总是抛出这个错误并且Force Close 05 04
  • 将自定义方法集成到 LINQ to Entities 查询中

    我有一个自定义方法 可以对一组数据执行一些计算 private int GetPercentages int OriginalValue int TotalValue var newValue int Math Round decimal