我是Linq的新手。我试图在SQL中将此语句写入Linq,但我无法做到正确。
SQL语句:
SELECT
changes.CHG_NO, changes.CHG_DESC,
transport_requests.TRKORR, transport_requests.AS4TEXT
FROM
dbo.changes
CROSS JOIN
dbo.transport_requests
WHERE
transport_requests.TRKORR = N'E81K900251' AND changes.CHG_NO = 1
我试过了:
var que = from c in db.changes
from t in db.transport_requests
where ((t.TRKORR == "E81K900251") && (c.CHG_NO == 1))
select new { c.CHG_NO, c.CHG_DESC,t.TRKORR, t.AS4TEXT };
但它不起作用。
没有抛出任何异常,它只是空了。
有人能指出正确的代码吗?
感谢。
这是我想要的输出:
CHG_NO CHG_DESC TRKORR AS4TEXT
-----------------------------------------------
1 test E81K900251 Dummy
![更改表格] [1]
http://i.stack.imgur.com/4yoy1.png
![transport_requests] [1]
答案 0 :(得分:0)
您需要指定两个实体之间的公共密钥。
https://code.msdn.microsoft.com/LINQ-Join-Operators-dabef4e9
var q =
from c in categories
join p in products on c equals p.Category
select new { Category = c, p.ProductName };
注意“在c等于p.Category”。
答案 1 :(得分:0)
好的,所以我设法找出问题所在。
var que = from c in db.changes
from t in db.transport_requests
where ((t.TRKORR == "E81K900251") && (c.CHG_NO == change[0].CHG_NO))
select new { c.CHG_NO, c.CHG_DESC,t.TRKORR, t.AS4TEXT };
在我的原始代码中,我在"中使用了更改[0] .CHG_NO,其中"部分。当我使用数组时,EF试图将整个数组拉入其范围。我需要将change [0] .CHG_NO的值存储到变量中,它解决了我的问题。
这就是我需要做的事情:
var change_0_CHG_NO = change[0].CHG_NO;
var que = from c in db.changes
from t in db.transport_requests
where ((t.TRKORR == "E81K900251") && (c.CHG_NO == change_0_CHG_NO))
select new { c.CHG_NO, c.CHG_DESC,t.TRKORR, t.AS4TEXT };