0

我对描述感到抱歉。我的英语不是很好。让我再试着描述一下。

假设我将 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) 中的值?

我要做的就是解析这个表达式,然后将其转换为 SQL 脚本。就我而言,我想做的是这样的:FindProducts(s=>filterList.Constains(s)),在这里我会尝试将 S 解析为列名,filterList 应该是 SQL 中的 in 子句。最后我会让我的 SQL 像这样: select * from TABLE where S in ('A', 'B') which is from that expression

4

2 回答 2

0

最后我想通了。我只是在表达式中初始化列表。然后我将其解析为 ListInitExpression 并获取值。如下代码:

myObj.FindProducts(s => new List<string>() { "AFilter", "BFilter" }.Contains(s.Name) && s.FactoryID==4)
于 2013-07-16T08:38:58.153 回答
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();
}
于 2013-07-16T02:06:59.490 回答