Linq Enumerable.Fhere没有被调用

时间:2017-02-18 00:20:12

标签: 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")
            return true;
        else
            return false;
    }

posData的类型为

List<dictionary<string,string>>

我在MyFilter函数中有一个断点但代码执行永远不会到达那里。我正在寻找MyFilter根据wheres参数进行一些自定义分析。这只是代码的一小部分。请帮我弄清楚MyFilter为什么不被调用?

1 个答案:

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