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过滤器: