我有以下代码
var filteredList = posData.Where(x => MyFilter(x, ruleDetail.wheres)).ToList();
其中MyFilter定义为
static bool MyFilter(Dictionary<string,string> dict, List<WhereClause> wheres)
{
if (dict["x"] == "y")
return true;
else
return false;
}
posData的类型为
List<dictionary<string,string>>
我在MyFilter函数中有一个断点但代码执行永远不会到达那里。我正在寻找MyFilter根据wheres参数进行一些自定义分析。这只是代码的一小部分。请帮我弄清楚MyFilter为什么不被调用?
答案 0 :(得分:1)
您的代码应该正常工作并且符合预期。在您的情况下它不起作用的唯一原因是posData
为空,所以请确保它不是。
我尝试使用此代码(与您的代码基本相同):
static void Main()
{
// create test collection
var posData = new List<Dictionary<string,string>>();
var test = new Dictionary<string,string>();
test.Add("x", "y");
posData.Add(test);
// call the Where function
var filteredList = posData.Where(x => MyFilter(x)).ToList();
Console.WriteLine(filteredList.Count); // outputs "1"
}
static bool MyFilter(Dictionary<string,string> dict)
{
Console.WriteLine("hello"); // outputs "hello"
return dict["x"] == "y";
}