C# 动态Linq占位符don';我不能正常工作
我有以下疑问:C# 动态Linq占位符don';我不能正常工作,c#,linq,dynamic-linq,C#,Linq,Dynamic Linq,我有以下疑问: query.Where("@0 != null && @1.ToString().Contains(@2)", searchedColumnName, searchedColumnName, searchedValue); 而且它不起作用(有多条记录需要检索) 例如,让searchedColumnName==“MY_COLUMN”,和searchedValue==“8”。当我调试到动态Linq方法时,得到的LambdaExpressio
query.Where("@0 != null && @1.ToString().Contains(@2)",
searchedColumnName, searchedColumnName, searchedValue);
而且它不起作用(有多条记录需要检索)
例如,让searchedColumnName==“MY_COLUMN”
,和searchedValue==“8”
。当我调试到动态Linq方法时,得到的LambdaExpression
表达式是:
{Param_0 => ((Convert("MY_COLUMN") != null) AndAlso "MY_COLUMN".ToString().Contains("8"))}
现在,如果我不使用占位符,比如:
query.Where(searchedColumnName + " != null && " +
searchedColumnName + ".ToString().Contains(\"" + searchedValue +"\")");
LambdaExpression
是:
{Param_0 => ((Param_0.MY_COLUMN != null) AndAlso Param_0.MY_COLUMN.ToString().Contains("8"))}
它是有效的
我猜这意味着我用错了占位符 是的,您写入占位符的方式有问题 您的列名“MY_column”被视为字符串,而不是列 所以我认为,这里的列名不能使用占位符。您可以使用以下代码: 。其中(searchedColumnName+“=@0”,searchedValue) 对于C#6 。其中($“{searchedColumnName}=@0”,searchedValue) 请参阅此链接。它很好地解释了动态INQ过滤器: