我很抱歉这个描述。我英文不太好。让我试着再次描述一下。
假设我将LamdaExpression作为名为FindProducts的方法的参数。现在我需要在FindProducts方法中解析这个参数,现在我遇到的问题是,当参数如下面的代码(Listn.Contains())时,我无法从这个参数的列表中获取值:
var sFilter = new List<string>(){"AFilter", "BFilter"};
myObj.FindProducts(s => sFilter.Contains(s.Name)); --- Here the parameter is an expression
我的问题是如何在方法FindProducts中的sFilter(AFilter和BFilter)列表中获取值?
我想做的就是解析这个Expression,然后将其转换为SQL脚本。在我的情况下,我想这样做:FindProducts(s =&gt; filterList.Constains(s)),这里我会尝试解析S作为列名,filterList应该在SQL中的子句中。最后我会像这样制作我的SQL:select * from TABLE其中S in('A','B')来自该表达式
答案 0 :(得分:0)
试试这个(如果我正确地解释你的问题):
var productList = new List<string>() {"A", "B", "C", "D", "E"};
var filterList = new List<string>() {"A", "B"};
var foundList = FindProducts(productList, s => filterList.Contains(s));
List<string> FindProducts(List<string> products, Func<string,bool> filter) {
return products.Where(s => filter(s)).ToList();
}
答案 1 :(得分:0)
最后我明白了。我只是在表达式中初始化List。然后我将其解析为ListInitExpression并获取值。代码如下:
myObj.FindProducts(s => new List<string>() { "AFilter", "BFilter" }.Contains(s.Name) && s.FactoryID==4)