并替换值?通常,带有字符串的动态linq查询可以使用替换值,例如:result=db.Persons.Where("Name==@1","John");我有未知数量的字符串要传递给Where子句。我对整数没有问题,但API似乎无法处理没有替换值的字符串。有谁知道解决这个问题的方法吗?我为Where语句创建了一个连接字符串,因此我可以添加“@1”或其他任何内容,但我无法向Where()添加参数,所以我被卡住了。谢谢!我为where语句创建了一个连接字符串,因此我可以添加“@1”或其他内容,但我无法向Where()添加参数,所以我被卡住了。是的你可以。Where方法的第二个参数是paramsobject[]values,所以只需要传递一个对象数组即可。例如,假设你在字典中有属性名称和值,你可以这样做:vardic=newDictionary{{"Name","John"},{"Age",30},{"City","纽约”}};...varconditions=dic.Keys.Select((key,idx)=>string.Format("{0}==@{1}",key,idx));stringpredicate=string.Join("And",条件);object[]values=dic.Values.ToArray();结果=db.Persons.Where(predicate,values);我想我能明白您关于字符串替换问题的意思。这里有一些可供探索的替代方案。如果您可以遵循ThomasPetricek的解决方案,它会特别有趣:在运行时在C#中构建[动态]LINQ查询http://tomasp.net/articles/dynamic-linq-queries.aspx使用PredicateBuilder表达式谓词动态编写http://www.albahari.com/nutshell/predicatebuilder.aspx另见http://blogs.msdn.com/b/mattwar/archive/2006/05/10/594966.aspx我这样做是为了某事。将DavidFowlersDynamicLinq项目与PredicateBuilder结合使用,您可以从GenericIQueryable构建谓词并构建它们。特别感谢StackOverflow上的一些答案让我将此行Func转换为:Expression>Implmentation..privatestaticExpression>GetFuncTbool(IQueryablesource,FuncexpressionBuilder){ParameterExpressionparameterExpression=Expression.Parameter(GetElementType(source),expressionBuilder.Method.GetParameters()[0].名称);DynamicExpressionBuilderdynamicExpression=expressionBuilder(newDynamicExpressionBuilder(parameterExpression));表达式体=dynamicExpression.Expression;返回Expression.Lambda>(body,parameterExpression);这允许在这样的循环中进行ORing//包含或完整的注释在这里,完整的演示在MvcCms.CodePlex的源码上面是C#学习教程:未知数量和替换值的动态Linq?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
