如何在Entity Framework中实现select case?

时间:2011-10-14 12:25:32

标签: linq entity-framework entity-framework-4

我在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

1 个答案:

答案 0 :(得分:2)

当您使用? :运算符时,除了二进制CASE语句之外,Linq-to-Entities不会为您生成CASE语句。

您可以在两个查询中运行它:首先获取SystemTypeId,然后运行相应的查询。

或者您可以绕过Linq并运行原始SQL,如果您有复杂的查询,这通常是最好的方法。