在linq中翻译sql

时间:2015-02-26 12:58:34

标签: asp.net asp.net-mvc linq

您好我必须在linq中编写下面的SQL查询:

Declare @OrgID int
Declare @OrgFinalID int
Set @OrgID = 91702 ---91703, 91702, 83279

select @OrgFinalID = 
        case
           when ParentOrganisationId is null then ItemID
           else ParentOrganisationId
         end
from Organisations
where ItemID = @OrgID

我试着写这个,但我没有正确的方式,对不起,但我是LINQ新手:

var OrgID=91207;
var OrgFinalID = from o in context.Organisations 
                 where o.ItemID == OrgID
                 select new
                 {
                  o.ParentOrganisationId == null ?  o.ItemID : o.ParentOrganisationId, 
                 }

我必须使用LINQ表达式将变量OrgFinalID中的值放入。

1 个答案:

答案 0 :(得分:2)

看起来你期望这只是一个数字?您可以在查询中调用.Single(),这基本上会返回值本身:

var OrgFinalID = (from o in context.Organisations 
                 where o.ItemID == OrgID
                 select new
                 {
                  ID = o.ParentOrganisationId == null ?  o.ItemID : Convert.ToInt32(o.ParentOrganisationId), 
                 }).Single().ID;

另请注意对Linq to SQL支持的Convert.ToInt32的调用,应该可以帮助您避免类型转换问题。

其他选择:

  • SingleOrDefault - 如果可能有单个结果,或根本没有结果(在这种情况下返回null)
  • First - 如果您希望查询中的一个或多个结果
  • FirstOrDefault - 类似于SingleOrDefault,如果查询没有结果,则返回null