2017-02-18 9 views
-3

Я следующий кодLinq Enumerable.Where Func не вызывался

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

Является ли 'postData' коллекцию' Dictionary '? –

+1

Как в стороне, тело вашего метода можно заменить просто: 'return dict [" x "] ==" y ";' – itsme86

+0

Может быть, 'posData' пуст? Это предотвратит вызов MyFilter() '. – itsme86

ответ

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"; 
} 
Смежные вопросы