代码之家  ›  专栏  ›  技术社区  ›  loki

如何使用unioan和嵌套的linq?

  •  0
  • loki  · 技术社区  · 16 年前

    How can i convert to sql to linq . i don't understand nested select query. i need linq codes. Please help me:((((

    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 jobseqno=@ToSeq
    

    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

    1 回复  |  直到 16 年前
        1
  •  2
  •   torvin Mayank    16 年前

    那能满足你的需要吗?

    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();