您好我必须在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中的值放入。
答案 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