具有混合条件的 LINQ to SQL 复杂联接

2024-01-11

我有一个 SQL 语句,正在尝试将其转换为 LINQ to SQL,并且我已成功将其大部分转换,但遇到了一个我无法在 LINQ 中理解的语句。

SQL 查询中令人头疼的部分是:

SELECT *
FROM step
INNER JOIN action on 
    (step.NextAction = action.ID and step.ActionStatus != 4) or 
    (step.ACTION = action.ID and step.ActionStatus = 4)

step是一个包含一系列操作的表,action是可用操作的列表。ActionStatus是状态列表的索引 - 4 == '失败'。

基本上,对于以下操作not失败,需要返回next行动。如果动作has失败,返回current action.

这只是其中一个联接(完整查询中总共有 10 个表),其中大多数是直接等值联接,有些是多个条件的联接,但我已经能够在 LINQ 中毫无问题地编写它们。不过这个,我看不出它会怎么写。

I saw this https://stackoverflow.com/questions/1264993/linq-left-join-on-multiple-or-conditions答案,但也看不出如何在这种情况下应用它。有任何想法吗?


from s in step
from a in action
where (s.NextAction = a.ID && s.ActionStatus != 4) || (s.Action = a.ID && s.ActionStatus = 4)
select new { Step = s, Action = a };

您可能需要查看生成的 SQL 并根据需要进行优化。

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

具有混合条件的 LINQ to SQL 复杂联接 的相关文章

  • 在一个数据访问层中处理多个连接字符串

    我有一个有趣的困境 我目前有一个数据访问层 它必须与多个域一起使用 并且每个域都有多个数据库存储库 具体取决于所调用的存储过程 目前 我只需使用 SWITCH 语句来确定应用程序正在运行的计算机 并从 Web config 返回适当的连接字
  • 通过引用传递 [C++]、[Qt]

    我写了这样的东西 class Storage public Storage QString key const int value const void add item QString int private QMap
  • std::list 线程push_back、front、pop_front

    std list 线程安全吗 我假设不是这样 所以我添加了自己的同步机制 我认为我有正确的术语 但我仍然遇到问题 每个函数都由单独的线程调用 Thread1 不能等待 它必须尽可能快 std list
  • free 和 malloc 在 C 中如何工作?

    我试图弄清楚如果我尝试 从中间 释放指针会发生什么 例如 看下面的代码 char ptr char malloc 10 sizeof char for char i 0 i lt 10 i ptr i i 10 ptr ptr ptr pt
  • 为什么 GCC 不允许我创建“内联静态 std::stringstream”?

    我将直接前往 MCVE include
  • 传递给函数时多维数组的指针类型是什么? [复制]

    这个问题在这里已经有答案了 我在大学课堂上学习了 C 语言和指针 除了多维数组和指针之间的相似性之外 我认为我已经很好地掌握了这个概念 我认为由于所有数组 甚至多维 都存储在连续内存中 因此您可以安全地将其转换为int 假设给定的数组是in
  • C++ 多行字符串原始文字[重复]

    这个问题在这里已经有答案了 我们可以像这样定义一个多行字符串 const char text1 part 1 part 2 part 3 part 4 const char text2 part 1 part 2 part 3 part 4
  • 访问外部窗口句柄

    我当前正在处理的程序有问题 这是由于 vista Windows 7 中增强的安全性引起的 特别是 UIPI 它阻止完整性级别较低的窗口与较高完整性级别的窗口 对话 就我而言 我想告诉具有高完整性级别的窗口进入我们的应用程序 它在 XP 或
  • WPF 数据绑定到复合类模式?

    我是第一次尝试 WPF 并且正在努力解决如何将控件绑定到使用其他对象的组合构建的类 例如 如果我有一个由两个单独的类组成的类 Comp 为了清楚起见 请注意省略的各种元素 class One int first int second cla
  • 在 Unity 中实现 Fur with Shells 技术

    我正在尝试在 Unity 中实现皮毛贝壳技术 http developer download nvidia com SDK 10 5 direct3d Source Fur doc FurShellsAndFins pdf Fins 技术被
  • 两个静态变量同名(两个不同的文件),并在任何其他文件中 extern 其中一个

    在一个文件中将变量声明为 static 并在另一个文件中进行 extern 声明 我认为这会在链接时出现错误 因为 extern 变量不会在任何对象中看到 因为在其他文件中声明的变量带有限定符 static 但不知何故 链接器 瑞萨 没有显
  • 结构体的内存大小不同?

    为什么第一种情况不是12 测试环境 最新版本的 gcc 和 clang 64 位 Linux struct desc int parts int nr sizeof desc Output 16 struct desc int parts
  • 如何定义一个可结构化绑定的对象的概念?

    我想定义一个concept可以检测类型是否T can be 结构化绑定 or not template
  • Laravel leftJoin 仅右表的最后一条记录

    我是 Laravel 的新手 我有两张桌子 1 产品 2 价格 products id product int p key name varchar prices id price int p key id product int
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • 对多个数据库执行 SQL 查询

    我知道我的帖子与该论坛中的其他帖子的标题非常相似 但我真的找不到我需要的答案 这是我的问题 我的 Windows Server 上运行着 SQL Server 在我的 SQL Server 中 我有大约 30 个数据库 它们都具有相同的表和
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么

随机推荐

  • 使用 Chrome Identity API 获取 id_token

    我正在开发一个 Google Chrome 扩展程序 以允许用户使用他们的 Google 帐户进行身份验证 我决定使用Chrome Identity API 要对我的应用程序中的用户进行身份验证 我需要获取 ID Token 签名令牌 有没
  • 未捕获的类型错误:无法读取 null 的属性“on”[重复]

    这个问题在这里已经有答案了 我收到这个未捕获的类型错误 我不确定是什么原因造成的 也许与 JQuery 有关 这是确切的代码 when add to cart link is clicked addtocart on click funct
  • 使用 javascript 将外部 .htm 文件加载到 div 中

    所以我得到了这个代码 JavaScript html a href file htm class ajax Link a 它在 Firefox 中完美运行 但是当我在 Chrome 中单击链接时 什么也没有发生 而 IE 只是打开一个包含该
  • R 中的 padr:以用户定义的间隔进行填充

    我正在以 5 分钟的时间间隔处理时间序列数据 部分 5 分钟时间序列缺失 我想对数据集重新采样 以用 NaN 值填充缺失的 5 分钟时间段 我在这里找到了有关如何解决此问题的大量信息 R 插入缺少日期 时间的行 https stackove
  • 在数组中查找几个感兴趣的区域

    假设我进行了一项实验 其中我让 python 程序运行了很长一段时间 在那段时间里 我对一些数量与时间的关系进行了多次测量 每次测量都以 1 到 3 秒之间的某个值分隔 所使用的时间步长比该值小得多 比如 0 01 秒 即使只取 y 轴 这
  • 使用 FFmpeg 中的 libavcodec 解码作品

    我正在尝试使用 libavcodec 解码作品 我可以单独使用 libopus 库来做到这一点 但我正在尝试使用 libavcodec 实现相同的目标 我试图弄清楚为什么它在我的情况下不起作用 我有一个 rtp 流并尝试对其进行解码 解码数
  • 在 Google Cloud Vision API 中指定响应语言

    我正在使用 Google Cloud Vision API 来检测给定图像中的地标 网络实体和其他内容 查看文档here https cloud google com vision docs libraries 我专门使用 images a
  • C# 选择列表中的元素作为字符串列表

    在 C 中 我需要将对象列表中特定属性的所有值获取到字符串列表中 List
  • 更改 ViewModel 的视图

    我正在尝试为 mt WPF 应用程序实现 MVVM 设计模式 为了将视图连接到视图模型 我使用ResourceDictionary 用于Application Resources 看起来像
  • StandardOpenOption.SPARSE 有什么用?

    Java 7 定义这个选项 http docs oracle com javase 7 docs api java nio file StandardOpenOption html SPARSE 但我无法理解它的用处 考虑这个简单的程序 在
  • Sql Server 2005 与 Windows 10 不兼容

    当我升级到 Windows 10 时 SQL Server 2005 可以工作 现在它无法工作 据 Microsoft 称 我读到它与 Windows 8 不兼容 对我来说 Windows 10 只是 Windows 8 的成熟版本 有什么
  • Scala Playframework 发送文件

    我有一串数据 是从数据库中的数据中获取的 我想将其发送给用户 但不创建文件的本地副本 例如 Ok MyString as file csv 但它不起作用 我该怎么做 您可以通过使用来做到这一点chunked与Enumerator 我也用过w
  • 触发 PHP 处理

    I ask a 类似的问题 https stackoverflow com q 5964407 2246380昨天 但这一切都变得令人困惑 我想我应该重新开始并尝试更好地解释它 我即将设计一个拍卖网站 与 eBay 非常相似 物品从 24
  • 表单验证和表单助手

    我仍然在 Play 2 0 中的表单验证和表单助手方面遇到困难 我有一个与 Twitter Bootstrap 一起使用的登录屏幕 所以我的登录表单如下所示 helper form routes Application authentica
  • 在 GitHub Actions 工作流程中缓存 APT 包

    我对我的 C 项目使用以下 Github Actions 工作流程 工作流程在约 40 秒内完成 但其中一半以上的时间都花在安装valgrind包及其依赖项 我相信缓存可以帮助我加快工作流程 我不介意多等几秒钟 但这似乎是对 GitHub
  • 将重音符号转换为 UTF-8 字符

    我有带有各种变音符号的 Rnw Latex 文档 Kri s hna and St o ne etc 当我编织文档时 它们正确翻译为Kri shna and St one etc R 或任何 R 包中是否有命令可以为我执行此转换 例如 co
  • Rails 5.2 Active Storage 清除/删除附件不会删除 Blob 或附件记录

    我正在使用 Rails 5 2 并尝试使用 Amazon S3 设置 Active Storage 我的应用程序可以完全访问 S3 并且我可以附加avatar图像到user 但当我尝试删除头像时 遇到以下问题 gt user avatar
  • Elixir Exrm 中的参数化节点名称

    我想将 Exrm 与分布在单台机器上的 Erlang 一起使用 我需要创建多个版本 仅节点名称不同 我知道 我可以在中配置节点名称rel vm args 但它将是静态的 我可以以某种方式生成具有不同节点名称的多个版本吗 我正在研究同样的问题
  • 谷歌地图填充页面保留在标题下方

    我试图使标题 div 出现在 Google 地图上方 但让地图填充页面内容的所有其余部分 我遇到的问题是页面不断滚动 但我不希望它滚动 它滚动的量与标题高度相同 我尝试将溢出 隐藏 但这不起作用 因为虽然它不再滚动 但它也没有显示谷歌徽标和
  • 具有混合条件的 LINQ to SQL 复杂联接

    我有一个 SQL 语句 正在尝试将其转换为 LINQ to SQL 并且我已成功将其大部分转换 但遇到了一个我无法在 LINQ 中理解的语句 SQL 查询中令人头疼的部分是 SELECT FROM step INNER JOIN actio