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";
}