请教关于动态查询的select的写法 返回
SqlSugar
沟通中
2
589
悬赏:0 飞吻

上面执行报错:
Exception has been thrown by the target of an invocation. ---> Syntax error (at index 79) at System.Linq.Dynamic.Core.Tokenizer.TextParser.ValidateToken(TokenId tokenId, String errorMessage) at System.Linq.Dynamic.Core.Parser.ExpressionParser.Parse(Type resultType, Boolean createParameterCtor) at System.Linq.Dynamic.Core.DynamicExpressionParser.ParseLambda(Type delegateType, ParsingConfig parsingConfig, Boolean createParameterCtor, ParameterExpression[] parameters, Type resultType, String expression, Object[] values) at System.Linq.Dynamic.Core.DynamicExpressionParser.ParseLambda(ParsingConfig parsingConfig, Boolean createParameterCtor, ParameterExpression[] parameters, Type resultType, String expression, Object[] values) at System.Linq.Dynamic.Core.DynamicExpressionParser.ParseLambda(ParsingConfig parsingConfig, ParameterExpression[] parameters, Type resultType, String expression, Object[] values) at InvokeStub_DynamicExpressionParser.ParseLambda(Object, Span`1) at System.Reflection.MethodBaseInvoker.InvokeWithManyArgs(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) --- End of inner exception stack trace --- at System.Reflection.MethodBaseInvoker.InvokeWithManyArgs(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at SqlSugar.SqlSugarDynamicExpressionParser.ParseLambda(ParameterExpression[] parameterExpressions, Type type, String sql, Object[] objects) at SqlSugar.DynamicCoreHelper.GetMember(Type entityType, Type propertyType, String shortName, FormattableString memberSql) at SqlSugar.QueryableProvider`1.Select[TResult](String expShortName, FormattableString expSelect, Type resultType) at SqlSugar.QueryableProvider`1.Select(String expShortName, FormattableString expSelect, Type resultType)
=>
因为 Entity的属性名和 字段名不一样 Entity的属性带有SugarColumn(columnname="xxxx") , 所以 直接写字符串或selectmodle的重载版本需要用字段名的. 上面反射获取的是属性名, 所以希望用动态查询的重载版本.
查看文档的写法是new(参数)的? 参数里面 还可以写as 这样的? 是什么原理啊?
//方式3: 动态表达式 StaticConfig.DynamicExpressionParserType = typeof(DynamicExpressionParser); //启动时配置
var list= db.Queryable<Order>().Select("it", $"it=>new(it.Id as Id, it.Name)", typeof(Order)).ToList();
//需要SqlFunc:https://www.donet5.com/Home/Doc?typeId=2569
热忱回答(2)
-
fate sta VIP0
2025/12/22以文档为准
0 回复 -
抱走 VIP0
2025/12/22@fate sta:按文档的写法确实可以了, 感谢 , 这个动态的查询语法格式是不是固定 it=>new( ... ) , ... 是按sql的写法, 不过用形参.属性 代替 是吗?
0 回复