SQL“WHERE IN”查询转换为 LINQ

2023-12-11

我正在尝试找到一种方法将这个非常复杂的 SQL 查询转换为 LINQ,但我似乎无法处理所有嵌入的“WHERE IN”子句。有人愿意向我伸出援助之手吗?

这是 SQL 代码(不用担心存储过程,它是对行总计的计数)

SELECT      
    (SELECT pac.Name FROM Account pac WHERE pac.AccountID = AC.ParentAccountID) AS ParentAccountName,
    ac.Name, dv.DeviceID, dv.Manufacturer, dv.Model, dv.SerialNr, dv.PrinterIPAddress,
    (SELECT TOP 1 au.AuditDate FROM PrinterAudit pa WITH (NOLOCK) INNER JOIN Audit au ON au.AuditID = pa.AuditID 
        WHERE pa.DeviceID=dv.DeviceID 
        ORDER BY AuditDate DESC) AS AuditDate,
    dbo.Get_TotalPageCountByDeviceId( DATEADD(month, -3, GETDATE()), GETDATE(), dv.DeviceID ) as TotalUsageLast3Months
FROM  Account ac WITH (NOLOCK)
          INNER JOIN Device dv ON ac.AccountID = dv.AccountID
WHERE dv.AccountID IN
          ( SELECT au.AccountID FROM Audit au WHERE au.AuditDate >= DATEADD(month, -3, GETDATE()) )
          AND (dv.Manufacturer + dv.Model) IN 
                (SELECT (dv2.Manufacturer + dv2.Model) 
                FROM Device dv2 
                WHERE dv2.AccountID = dv.AccountID 
                AND dv2.Manufacturer = dv.Manufacturer 
                AND dv2.Model = dv.Model 
                AND (dv2.ERPEquipID IS NOT NULL OR dv2.ERPData IS NOT NULL ) )
                AND dv.ERPEquipID IS NULL AND dv.ERPData IS NULL
                AND dv.DeviceID IN 
                (SELECT pa.DeviceID 
                FROM PrinterAudit pa WITH (NOLOCK) 
                INNER JOIN Audit au ON au.AuditID = pa.AuditID 
                WHERE au.AuditDate >= DATEADD(month, -3, GETDATE()))
ORDER BY ParentAccountName, ac.Name

最后结果:

var result =
    (from dv in Device
    where Audit.Any(au => au.AuditDate >= DateTime.Now.AddMonths(-3)
        && au.AccountID == dv.AccountID) 
    where Device.Any(dv2 => dv2.AccountID == dv.AccountID
        && dv2.Manufacturer == dv.Manufacturer
        && dv2.Model == dv.Model
        && (dv2.ERPEquipID != null || dv2.ERPData != null)
        && dv.ERPEquipID == null 
        && dv.ERPData == null
        && PrinterAudit.Any(pa => pa.Audit.AuditDate >= DateTime.Now.AddMonths(-3) && pa.DeviceID == dv.DeviceID))
    orderby dv.Account.ParentAccountID, dv.Account.Name
    select new
    {
        ParentAccountName = Account.Where(pac => pac.AccountID == dv.Account.ParentAccountID).Select(pac => pac.Name),
        Name = dv.Account.Name,
        DeviceID = dv.DeviceID,
        Manufacturer = dv.Manufacturer,
        Model = dv.Model,
        SerialNumber = dv.SerialNr,
        PrinterIPAddress = dv.PrinterIPAddress,
        AuditDate = (from pa in PrinterAudit where pa.DeviceID == dv.DeviceID orderby pa.Audit.AuditDate descending select pa.Audit.AuditDate).Take(1),
        TotalUsageLast3Months = (from p in PrinterAudit
                            where p.DeviceID == dv.DeviceID
                            group p by p.DeviceID into total
                            select new
                            {
                                Total = Get_TotalPageCountByDeviceId(DateTime.Now.AddMonths(-3), DateTime.Now, dv.DeviceID)
                            })

    });

您转换 SQLINlinq 的语句Contains or Any

Contains

from dv in db.Device
where
  (from au in db.Audit
  where au.AuditDate >= DateTime.Now.AddMonths(-3)
  select au.AccountID).Contains(dv.AccountID)

Any

from dv in db.Device
where 
   db.Audit.Any(au => au.AuditDate >= DateTime.Now.AddMonths(-3) && 
                au.AccountID == dv.AccountID)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL“WHERE IN”查询转换为 LINQ 的相关文章

  • 实体框架在数据读取器关闭时调用“Read”[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我的网络主
  • 延迟加载实体框架 v.1 中昂贵的字段

    在网上搜寻并认为我能找到解决方案后 我似乎又碰上了另一堵砖墙 我的数据库中有一个表 照片 包含 PhotoID 标题 排序和四组二进制数据的列 原始 大 中和小 是的 它基于旧的 ASP NET 入门工具包 并进行了各种修复等 我正在从 L
  • 了解 MVC-5 身份

    我创建了一个新的ASP NET MVC 5申请与Individual User Accounts然后更新了所有的Nuget packages在解决方案中 现在我尝试遵循一些教程中显示的一些指南 但遇到了一些问题 第一个是一个名为Applic
  • EF6“模型配置”已设置但未发现

    我有以下库 实体模型 dll 包含 POCO 类 实体DAL dll 引用EntityMODEL dll 实体服务 dll 引用 EntityMODEL dll 和 EntityDAL dll 实体测试 dll 引用 EntitySERVI
  • 为什么实体框架尝试选择所有列,即使我只指定了两列?

    我继承了一个 ASP MVC 项目 该项目使用 Entity Framework 6 1 3 与 Dynamics CRM 2011 SQL 数据库进行交互 我正在使用此查询来尝试获取具有帐号的所有活动帐户 并且我仅选择两列为匿名类型 va
  • NotSupportedException:LINQ to Entities 无法识别该方法[重复]

    这个问题在这里已经有答案了 我正在尝试使此查询与 EF 一起使用 但它抛出异常 var c ac Communities OrderBy o gt o Posts Count Skip page limit Take limit Selec
  • 如何在 linq to sql 中批量插入/更新?

    我该如何做这两种情况 目前我正在做这样的事情 public class Repository private LinqtoSqlContext dbcontext new LinqtoSqlContext public void Updat
  • 在 ASP.NET 中将多个字段绑定到列表框

    我对 ASP NET 尤其是 LINQ 和 SQL 还很陌生 假设我有一个表 员工 其中包含 姓氏 名字 和 ID 字段 我想将其绑定到列表框 我希望列表框显示其内容 例如 LASTNAME FIRSTNAME 并且我希望每个项目的值为 I
  • 实体框架以错误的顺序插入子对象

    Question 为什么 EF 首先在它所依赖的对象 TimesheetActivity 之前插入具有依赖项的子对象 PersonnelWorkRecord 另外我有哪些纠正这个问题的选择 ERD 简化 This is predefined
  • 而不是SQL Server中的触发器丢失SCOPE_IDENTITY?

    我有一个表 我在其中创建了一个INSTEAD OF触发执行一些业务规则 问题是当我将数据插入该表时 SCOPE IDENTITY 返回一个NULL值 而不是实际插入的身份 插入 范围代码 INSERT INTO dbo Payment Da
  • EF Core - 在运行时向数据库添加新表

    我有一个 asp net core 项目 需要能够在运行时支持插件 因此 我需要根据插入的内容生成数据库表 每个插件都分为单独的项目 并且它们具有他们自己的 DbContext 类 要使用的插件在编译时是未知的 只有在运行时才知道 现在在
  • 无效操作。连接已关闭。 ASP.NET MVC

    这种情况并不经常发生 但有时我会收到一封通过电子邮件发送给我的异常报告 指出这段代码 我想知道您是否发现以下代码有任何问题 我无法让它在本地失败 并且使用断点跟踪数据总是会一步步给出正确的结果 namespace DomainModel C
  • 使用 Linq to Sql 查找半径距离内的邮政编码

    我有一个邮政编码及其纬度 经度的数据库表 我试图找到一些代码 显示一个查询 该查询采用邮政编码和 x 英里 然后返回包含该半径内所有邮政编码的结果集 精度不是很重要 只要它接近 是否可以通过 Linq to SQL 查询来完成此操作 这样我
  • 基于“属于”关系的雄辩的 where 条件

    假设我有以下模型 class Movie extends Eloquent public function director return this gt belongsTo Director 现在我想使用基于directors 表中的列的
  • .NET 实体框架核心

    我已经阅读了过去两年中发布的几乎所有有关 EF 的其他问题 我下载其他软件包没有任何问题 只是实体框架不会为我安装 我什至尝试安装最新版本的 Nuget 并在我的项目目录中使用它的工具来恢复包 之后 我将这一行添加到我的 csproj 中
  • 应用程序内的 SQLite 文件版本兼容性

    我有一个 C NET 应用程序 一种复杂的计算应用程序 其中用户输入数据 处理后的信息使用 JSON 序列化和 EF 保存到 SQLite 文件中 需要时可以将其加载到我们的应用程序中 应用程序在开发过程中经历了很多变化 类也被修改 因此
  • 将大量实体插入 SQL Server 2012 [重复]

    这个问题在这里已经有答案了 我正在进行一个使用 Entity Framework 5 和 SQL Server 2012 的项目 我们需要一次插入大量行 100k 个实体的顺序 基本上 我们有一个物理程序 它输出大量二进制数据 然后我们需要
  • 有没有更好的方法使用 MVC 4 和 Entity Framework 5 添加子记录?

    我正在学习 MVC 并结合实体框架处理其无状态性质 我的问题是 有没有更优雅的方式来处理下面的场景 我有两个 POCO 实体 public class Contest public long ID get set public IColle
  • 包括过滤器子集合[重复]

    这个问题在这里已经有答案了 我在为 LINQ 查询中包含的项目添加一些过滤条件时遇到一些困难 我的查询就像 var item Context Order Include Inner Include Inner first Include I
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91

随机推荐

  • C# 内存配置文件

    我正在尝试对积累大量内存的应用程序执行一些内存分析 我找到了这个工具 CLRProfiler http msdn microsoft com en us library ff650691 aspx 但它似乎不起作用 当我运行它时 它永远处于
  • 如何从字符串值创建日期对象

    当运行下面的代码时 我得到一个UNPARSABLE DATE EXCEPTION 我该如何解决 package dateWork import java text DateFormat import java text ParseExcep
  • 如何在 android studio 中减小 Apk (.apk) 大小

    当我运行我的应用程序时 apk 大小将为 21 MB 即使我启用了混淆器 我使用 android studio 来运行项目 在项目文件中 src 文件夹大小为 8 62 MB lib 文件夹大小为 400 KB 那么我如何减小 apk 文件
  • 如何制作只允许整数值的文本框?

    我想在我的 wpf 应用程序中创建一个文本框 它只接受整数值 如果有人在 a z 之间输入字符 文本框将拒绝它 因此它不会显示在文本框中 您可以处理 PreviewTextInput 事件 private void TextBox Prev
  • 如何停止 XDocument.Save 写入转义字符

    我正在读取 XML 数据varchar column in a SQL db 转换为 linq to sqlXElement属于一个XDocument 当我执行XDocument Save方法中 XML 被写入文件 但包含转义字符 例如 g
  • mongodb JavaScript 更新

    如何从 JS 更新 mongodb 集合 db collection fruits function err collection collection update id content fruitID content function
  • DBMS_APPLICATION_INFO.SET_CLIENT_INFO 不起作用

    我需要设置 client info 值以区分不同的客户端 这些是我正在运行来测试的脚本 第1步 系统架构 ALTER SYSTEM FLUSH SHARED POOL ALTER SYSTEM FLUSH BUFFER CACHE 第 2
  • 使用 .htaccess 重写文件夹名称

    我想知道是否可以使用 htaccess重写文件夹名称 我的意思是这样的 假设我有一个像这样的网址 www site com folder1 page php 现在我想将网址重写为 例如 www site com apple page php
  • 列表视图中的编辑文本不显示软键盘

    我在列表视图项中使用了edittext 但是即使设置活动android windowSoftInputMode adjustPan 它也无法正常工作 有没有办法解决这个问题 先感谢您 将其添加到您的视图中 android descendan
  • 如何使用 github 令牌或 ssh 密钥设置 Git Bash (msysgit)

    Git 新手 遵循 github 上的所有指示help但简单的命令 如 git pull 和 git push 继续在每次调用时提示我的密码 具体来说 我设置如下 git config global user name 你的名字 git c
  • 按 ID 加载单个视频的 YouTube GData feed

    我正在尝试在 UIWebView 中播放 YouTube 视频 而不是离开我的应用程序 谷歌认为这很容易 http apiblog youtube com 2009 02 youtube apis iphone cool mobile ap
  • 为什么 Google Colab TPU 和我的电脑一样慢?

    由于我有一个很大的数据集 而且我的电脑功率不大 所以我认为在 Google Colab 上使用 TPU 是个好主意 所以 这是我的 TPU 配置 try tpu tf distribute cluster resolver TPUClust
  • 删除自动添加的 xmlns 属性

    我正在尝试执行简单的搜索和突出显示功能Javascript搜索一段文本 这XHTML出现该文本片段的标签也作为参数给出 以获取定位该文本的额外帮助 我正在测试此功能的 XHTML
  • JSF - (转义特殊字符)

    I am trying set 1 2 in outputText
  • 触发器是事务吗?

    我有一些触发器BEFORE INSERT AFTER DELETE在桌子上 如何确保触发器失败时我的查询会回滚 我的意思是我想确定 查询和触发器要么都工作 要么都不起作用 那么触发器是事务吗 来自mysql 文档 对于事务表 语句失败应导致
  • 在 GPS (Ada IDE) 中使用 glib.h 进行编译时出现问题

    我在尝试在 GPS 中编译 Ada 代码时遇到一些麻烦 当我将 GPS 放入包裹中时 它显示丢失 我尝试使用 apt get 安装 确实如此 但错误仍然存 在 接下来我能做什么 我在 x64 Ubuntu 12 04 上运行 GPS 这是我
  • Python Plotly Sankey 图未显示

    想知道是否有人可以帮助找出为什么这个桑基图不起作用 我很确定我遵循了正确的语法和约定来使用该模块 因为这个我一直用头撞桌子 import plotly offline data trace domain x 0 1 y 0 1 height
  • ASP.Net 5 项目中缺少 CloudTable.Execute(以及所有非异步方法)

    使用 Microsoft Visual Studio 2015 RC 如果我创建一个新的 ASP Net Web 应用程序 然后转到 NuGet 并在 CloudTable 类中添加对最新版本的 Azure 存储 Install Packa
  • 是否可以使用 R 在条形图中“分割条形”?

    我旁边有一个条形图 T 我需要的是在每个条形的每个高度 标记 处分割 或画一条水平线 要绘制的样本矩阵 gt head top fem FD1 FE2 FF1 J01 2 2 10 J02 4 0 0 J03 6 2 5 J04 1 6 3
  • SQL“WHERE IN”查询转换为 LINQ

    我正在尝试找到一种方法将这个非常复杂的 SQL 查询转换为 LINQ 但我似乎无法处理所有嵌入的 WHERE IN 子句 有人愿意向我伸出援助之手吗 这是 SQL 代码 不用担心存储过程 它是对行总计的计数 SELECT SELECT pa