【问题标题】:How to convert this T-Sql to linq [closed]如何将此 T-Sql 转换为 linq [关闭]
【发布时间】:2012-11-05 10:06:01
【问题描述】:

我写了这个 tsql 查询

((SELECT Id,[Mesc]
      ,[Line]
      ,[Unit]
      ,[Discription]
      ,[InvQty]
      ,[LastDateNil]
      ,[StCode]
      ,[PlanCode]
      ,[MIN]
      ,[MAX]
      ,[LastDateConsum]
      ,[PbsNo]
      ,[PbsDate]
      ,[PbsQty]
      ,[PbsQtyRec]
      ,[DateDelay]
      ,[TypeRequest]
      ,[HeaderId]
  FROM [MyMaterialDB].[dbo].[Report2]
  WHERE headerid IN(SELECT HeaderId FROM [MyMaterialDB].[dbo].[Report2] WHERE line='I'))

  Order by Mesc,Line,unit

我想将其转换为 linq,但我是 linq 的 biginet,请帮助我。谢谢大家。

【问题讨论】:

  • 为什么不先学习就切换到linq?至少是基础?
  • 你尝试过什么失败了(在“失败”中,我指的是你所知道的每一个意外行为。所以如果你在问题关闭之前更新问题,让我们确切地知道失败的原因)?

标签: c# linq


【解决方案1】:

除非是拼写错误,否则不需要内部选择:

SELECT [Id], [Mesc], <etc>
  FROM [MyMaterialDB].[dbo].[Report2]
  WHERE line='I'
  ORDER BY Mesc,Line,unit

所以你的 LINQ 应该是这样的:

report2
  .Select(x => new { x.Id, x.Mesc, <etc> })
  .Where(x => x.line == "I")
  .OrderBy(x => x.Mesc)
  .ThenBy(x => x.Line)
  .ThenBy(x => x.unit)

(请注意我的头顶 - 可能需要稍微纠正)。

【讨论】:

  • stusmith:感谢您的帮助,但我的查询是 SELECT [Id], [Mesc], FROM [MyMaterialDB].[dbo].[Report2] WHERE headerid in(HeaderId FROM [ Report2] WHERE line='I')
  • 是的,我认为不需要内部选择:它是同一个表的连接(Report2Report2)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-02
  • 1970-01-01
  • 2012-11-27
相关资源
最近更新 更多