【发布时间】:2014-09-05 15:18:55
【问题描述】:
我有一本字典:
<string,List<string>>
关键是产品代码说“product1”然后列表是属性列表:
"Brand","10.40","64","red","S"
然后我'可以'有一个规则/过滤器列表,例如
var tmpFilter = new customfilters();
tmpFilter.Field = "2";
tmpFilter.Expression = ">";
tmpFilter.Filter = "10";
因此对于上面的示例,这将通过,因为在索引 2 (tmpFilter.Field) 处它大于 10;然后我有另一个对象,它定义了我要写入文件的列表中的哪些字段。对于那个字典项目,我只想写过滤器匹配的产品品牌和价格。
目前我没有过滤器:
var tmp = new custom();
tmp.Columns = "0,1";
tmp.Delimiter = ",";
tmp.Extention = ".csv";
tmp.CustomFilters = new List<customfilters>() {new customfilters(){ Field = "2", Expression = ">", Filter = "10"} };
public static void Custom(custom custom)
{
foreach (var x in Settings.Prods)
{
//Get Current Product Code
var curprod = Settings.ProductInformation[x];// the dictionary value
foreach (var column in custom.Columns)
{
var curVal = curprod[Convert.ToInt32(column)];
tsw.Write(curVal + custom.Delimiter);
}
Settings.Lines++;
tsw.WriteLine();
}
tsw.Close();
}
如果所有过滤器都通过该字符串列表,我只想编写 curprod。
我该怎么做?
【问题讨论】:
-
您是否已经让
customFilter逻辑正常工作?您实际上是如何将它们应用到您的属性列表中的? -
我目前没有应用过滤器逻辑,这是一个问题,当我选择要写入文件的“产品”时如何应用过滤器逻辑 customfilters 对象只是定义了过滤器,它是一个字段自定义对象查看我的更新
-
仍然不完全清楚你卡在哪一部分。您是否在问如何仅选择通过过滤器的项目(在这种情况下,您可以简单地说
if (applyMyFilters(curprod)),其中applyMyFilters是将每个过滤器应用于您传递的List<string>的函数并返回true 或false)或者您是在问如何实际使用自定义过滤器本身?换句话说,在您的示例中,如何使tmpFilter使用条件>10实际测试列表中的第三项? -
我怎样才能真正应用字符串中的测试,这样我就可以做类似 curprod[0].SomeMethordToQuery("> 10") 的事情,它返回一个布尔值
-
好的 - 所以您真正要寻找的是如何将
> 10解析为实际的逻辑谓词。
标签: c# string list dictionary