Generate EF orderby expression by string

前端 未结 5 1508
不思量自难忘°
不思量自难忘° 2020-11-29 05:27

I want to generate expression by string parameter,some code like:

private Expression> Generate(string orderby)
{
    switch (orderb         


        
5条回答
  •  感动是毒
    2020-11-29 06:08

    Use a generic method. Since lambda expressions can only be assigned to strongly typed delegates or expressions, we must use an according temp. Then we can assign this temp to a variable typed as object. Finally we can return the result by casting to the result type.

    public Expression> Generate(string orderby)
    {
        object result;
        switch (orderby) {
            case "Time":
                Expression> temp1 = t => t.Time;
                result = temp1;
                break;
            case "Money":
                Expression> temp2 = t => t.RewardMoney;
                result = temp2;
                break;
            default:
                Expression> temp3 = t => t.Id;
                result = temp3;
                break;
        }
        return (Expression>)result;
    }
    

提交回复
热议问题