当前位置: 首页 > 面试题库 >

LINQ to SQL复合体在混合条件下联接

盖泽宇
2023-03-14
问题内容

我有一个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 ==’失败’。

基本上,对于 失败的动作,它需要返回 下一个 动作。如果行动 已经 失败,它返回 当前 的行动。

这只是联接之一(完整查询中总共有10个表),其中大多数都是直接等值联接,其中一些处于多种条件下,但是我已经能够用LINQ编写它们,没有问题。但是,我看不出它是怎么写的。


问题答案:

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,并在需要时进行优化。



 类似资料:
  • 描述 (Description) 您可以使用default函数将mixin与其他混合匹配相匹配,并创建看起来像else或default语句的conditional mixins 。 例子 (Example) 以下示例演示了在LESS文件中使用条件mixins - <!doctype html> <head> <title>Conditional Mixins</title>

  • 问题内容: 问题:我有一个SQL函数,该函数返回文件列表 现在,我应该使用联合将其他列表加入该列表,但前提是用户是admin。 那可能吗?就像是: 问题答案:

  • 当以下转换在将RDD写入文件之前执行时,它们之间有什么区别? 聚结(1,洗牌=true) 合并(1,洗牌=假) 代码示例: 它与collect()相比如何?我完全知道Spark save方法将以HDFS风格的结构存储它,但我更感兴趣的是collect()和shuffled/non shuffled coalesce()的数据分区方面。

  • OpenGL中,混合(Blending)通常是实现物体透明度(Transparency)的一种技术。透明就是说一个物体(或者其中的一部分)不是纯色(Solid Color)的,它的颜色是物体本身的颜色和它背后其它物体的颜色的不同强度结合。一个有色玻璃窗是一个透明的物体,玻璃有它自己的颜色,但它最终的颜色还包含了玻璃之后所有物体的颜色。这也是混合这一名字的出处,我们混合(Blend)(不同物体的)多

  • 在C++98(或更早)版本中,union的成员类型,必须不含自定义构造/析构函数或者赋值操作符。 union U { int m1; complex m2; //错误(明显的):complex拥有构造函数 //错误(不那么明显):string的内部数据只能严格地由其构造函数, // 拷贝构造函数,和析构函数去维护 string m3; }; 亦即: U u;

  • 4. 结构体和联合体 我们继续用反汇编的方法研究一下C语言的结构体: 例 19.3. 研究结构体 #include <stdio.h> int main(int argc, char** argv) { struct { char a; short b; int c; char d; } s; s.a = 1; s.b = 2; s.c = 3; s.d = 4;