2011-10-14 71 views
2

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

回答

2

LINQ到實體,當您使用? :運營商不會爲你生成一個CASE語句,比二進制CASE語句等。

您可以在兩個查詢中運行它:首先獲取SystemTypeId,然後運行相應的查詢。

或者你可以繞過Linq並運行原始SQL,如果你有一個複雜的查詢,這通常是最好的方法。