using System; using System.Linq.Expressions; using Luticate2.Auth.Dbo; using Luticate2.Auth.Dbo.Pagination; using Luticate2.Auth.Dbo.Result; using Microsoft.CodeAnalysis.CSharp.Scripting; using Microsoft.CodeAnalysis.Scripting; namespace Luticate2.Auth.Business.Pagination { public class LuFilterParser { public static LuResult Parse(string data) { var completeData = $"(x) => ({data})"; try { var options = ScriptOptions.Default.AddReferences(typeof(LuFilterParser).Assembly); var expr = CSharpScript.EvaluateAsync>>(completeData, options).Result; return LuResult.Ok(new LuFilterDbo { Expression = expr }); } catch (Exception e) { return LuResult.Error(LuStatus.InputError.ToInt(), e); } } } }