我在SQL中查询了CASE,如何使用Entity Framework进行查询?
DECLARE @SystemTypeId int
SELECT @SystemTypeId = [SystemTypeId] FROM [Properties] WHERE [Id] = @PropertyId
SET @RETURN_VAL =
CASE @SystemTypeId
WHEN 2 THEN (SELECT [Created] FROM [Assets] WHERE [Id] = @AssetId)
WHEN 3 THEN (SELECT dbo.GetAssetValueById([CreatedBy])
FROM [Assets]
WHERE [Id] = @AssetId)
WHEN 9 THEN (SELECT [LastModified]
FROM [Assets]
WHERE [Id] = @AssetId)
ELSE NULL
END
答案 0 :(得分:2)
当您使用? :
运算符时,除了二进制CASE语句之外,Linq-to-Entities不会为您生成CASE语句。
您可以在两个查询中运行它:首先获取SystemTypeId,然后运行相应的查询。
或者您可以绕过Linq并运行原始SQL,如果您有复杂的查询,这通常是最好的方法。