2010-06-25 44 views
0

我怎样才能转换为SQL到LINQ。我不明白嵌套选择查询。我需要linq代码。请帮我:((((如何使用unioan和从linq嵌套?

SELECT @id=id FROM 
    (SELECT id,workorder AS workorderno ,CAST(jobseqno AS int) AS jobseqno FROM dbo.CTask 
    UNION ALL 
    SELECT id,workorderno,cardno AS jobseqno FROM dbo.NonRoutineCard 
    UNION ALL 
    SELECT id,workorderno,cardno AS jobseqno FROM dbo.AdditionalWorkCard) a 
WHERE RTRIM(workorderno)=RTRIM(@ToNo) AND [email protected] 

LINQ:

var id = 
    (from task in stock.CTasks select new { task.id, task.workorder, task.jobseqno }) 
    .Union(from card in stock.NonRoutineCards select new { card.id, card.workorderno, card.cardno }) 
    .Union(from card in stock.AdditionalWorkCards select new { card.id, card.workorderno, card.cardno }) 
    .Where(x => x.workorderno.TrimEnd() == ToNo && x.jobseqno == ToSeq) 
    .FirstOrDefault();

如果我写上面的代码错误如下:适合您的需求

alt text http://i47.tinypic.com/2lax4au.png

+0

SQL代码将多个表连接在一起: http://blogs.msdn.com/b/vbteam/archive/2008/01/31/converting-sql-to-linq-part-8-left-right-outer-加入-账单horst.aspx 你也应该做一些UNION特定阅读所有的,不知道它是什么,但它一定是某种加盟。 – MrFox 2010-06-25 13:26:24

回答

2

意志

var id = 
    (from task in stock.CTasks select new { task.id, task.workorder, jobseqno= task.jobseqno }) 
    .Union(from card in stock.NonRoutineCards select new { card.id, card.workorderno, jobseqno = card.cardno }) 
    .Union(from card in stock.AdditionalWorkCards select new { card.id, card.workorderno, jobseqno = card.cardno }) 
    .Where(x => x.workorderno.TrimEnd() == ToNo && x.jobseqno == ToSeq) 
    .FirstOrDefault(); 
+0

它不工作:( – programmerist 2010-06-25 13:42:58

+0

你能更精确吗? – torvin 2010-06-25 13:46:40

+0

我重新安排了我的代码等我吧 – programmerist 2010-06-25 13:47:36