C# Linq可枚举。其中未调用Func
我有以下代码C# Linq可枚举。其中未调用Func,c#,linq,ienumerable,C#,Linq,Ienumerable,我有以下代码 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") re
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根据Where参数进行一些自定义分析。这只是代码的一小部分。请帮助我找出为什么MyFilter没有被调用?您的代码应该可以正常工作,并符合预期。在您的情况下,它不起作用的唯一原因是如果posData为空,那么请确保它不是空的 我用与您的代码基本相同的代码进行了尝试:
postData是字典的集合吗?顺便说一下,您方法的主体可以替换为:return dict[x]==y;也许posData是空的?这将阻止调用MyFilter。posData不是空的。它是一个列表,并且有Count>0@FelipeOriani对
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";
}