She*_* Sh 2 c# sql linq sql-server entity-framework
您好我正在尝试使用Linq将此代码从SQL转换为C#
SQL代码是这样的:
SELECT N.Name,N.Unit,N.Typee,ID,NOTE
FROM Table_A N join Table_B A on (N.ID = A.ID)
join NotasQL G on ((N.Not1 = G.CODE) or (N.Not2 = G.CODE) )
join Attributes X on (A.AppID= X.AppID)
Run Code Online (Sandbox Code Playgroud)
这个代码在SQL中运行良好,具有预期的结果,但是当我试图在C#上复制它时,我不知道如何做OR部分,这是我到目前为止所做的:
var Select = (from A in context.Table_A
from B in context.Table_B
from E in context.NotasQLs
from D in context.Attributes
where (String.Compare(A.ID, B.ID, true) == 0 &&
String.Compare(B.AppID, D.AppID, true) == 0
&&
(String.Compare(A.Not1, E.CODE, true) == 0 ||
String.Compare(A.Not2, E.CODE, true) == 0))
Run Code Online (Sandbox Code Playgroud)
我有一个应用程序运行时已过期,因为查询没有选择任何内容,如果我删除或条件运行但我需要OR.
用于将SQL转换为LINQ查询理解:
FROM选择转换为单独声明的变量.DISTINCT,TOP,MIN,MAX等等)转换成适用于整个LINQ查询功能.new {... }).JOIN那是不是所有的平等与测试条件AND必须用处理where条款之外的加入,或跨产品(from... from...),然后whereJOINAND应将两个表之间的多个ed相等测试条件转换为匿名对象LEFT JOIN通过使用模拟into joinvariable做一套从from该joinvariable其次.DefaultIfEmpty().COALESCE为条件运算符(?:)和null测试.IN来.Contains()和NOT IN到!... Contains().BETWEEN 低 AND 高到低 <= X && X <= 高.SELECT * 必须替换为select range_variable或者连接,包含所有范围变量的匿名对象.SELECT字段必须替换为select new {... }创建一个包含所有所需字段或表达式的匿名对象.FULL OUTER JOIN必须使用扩展方法处理正确的.所以对于你的查询,
var ans = from N in Table_A
join A in Table_B on N.ID equals A.ID
from G in NotasQL
where G.CODE == N.Not1 || G.CODE == N.Not2
join X in Attributes on A.AppID equals X.AppID
select new {
N.Name,
N.Unit,
N.Typee,
N.ID, // ??? not sure table for this column
G.NOTE // ??? not sure table for this column
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
148 次 |
| 最近记录: |