c# - 请帮助我将 SQL 转换为 LINQ

标签 c# sql linq

我有这个查询,我一直在尝试弄清楚如何转换为 LINQ:

select bjbecd, bjbesk, areotx 
from insku 
inner join iniwre on bjcomp=a7comp and bjbecd=a7becd and bjbesk=a7besk 
inner join initem on bjcomp=arcomp and bjbecd=arbecd 
where a7comp=1 and 
a7wcde in (1,10) and 
a7ohdq>0 and rtrim(a7becd) + rtrim(a7besk) not in
(select skucode from eoditems)

到目前为止,这是我的 LINQ:

(from i in db.INSKUs
    join w in db.INIWREs on 
        new { i.BJCOMP, i.BJBECD, i.BJBESK }
        equals  
        new { w.A7COMP, w.A7BECD, w.A7BESK } 
    join t in db.INITEMs on 
        new { i.BJCOMP, i.BJBECD }
        equals 
        new { t.ARCOMP, t.ARBECD }
    where w.A7COMP == 1
    where w.A7WCDE == 1 || w.A7WCDE == 10
    where w.A7OHDQ > 0
    where !(from z in db.EODItems
            select z.SkuCode).Contains(w.A7BECD.TrimEnd() + w.A7BESK.TrimEnd())
    select new { i.BJBECD, i.BJBESK, t.AREOTX }
);

我在第一次连接时收到一条错误消息,指出“连接子句中的一个表达式的类型不正确。调用‘Join’时类型推断失败。”

我所做的所有搜索都与类型匹配错误有关,但我四次检查了连接中的所有类型,它们是相同的。

最佳答案

尝试做这样的事情:

join w in db.INIWREs on 
 new { i.BJCOMP, i.BJBECD, i.BJBESK }
    equals  
       new { BJCOMP = w.A7COMP, BJBECD = w.A7BECD, BJBESK  = w.A7BESK } 

应该可以。

关于c# - 请帮助我将 SQL 转换为 LINQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8858300/

相关文章:

c# - 从数据库中解析xml

sql - 如何根据表中的 IP 地址列表验证用户的 IP 地址?

mysql - 如何将 like 与特定模式一起使用?

java - c#/LINQ .Select in Java(备选)

c# - 如何在 ModernUI 中获取选中的 ModernTab 的 DisplayName?

c# - 无法连接到包含中文字符的 MySQL 数据库

c# - 重载时无限递归==

sql - 如何在 SQL Server 查询中重置 sum() over ()?

c# - 改进 Entity Framework 中的嵌套查询

c# - 检查一个 IEnumerable 是否包含另一个 IEnumerable 的所有元素