2017-02-18 3 views
-3

と呼ば得ていない私は、次のコードLINQのEnumerable.Where funcが

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>> 

であると定義されて

var filteredList = posData.Where(x => MyFilter(x, ruleDetail.wheres)).ToList(); 

を持っていますMyFilter関数ではコードは実行されません。 wheresパラメータに基づいてカスタム解析を行うMyFilterを探しています。これはコードのほんの一部です。なぜMyFilterが呼び出されないのか理解してもらえますか?

+0

? –

+1

あなたの体のメソッドはちょうどと置き換えることができます: 'return dict [" x "] ==" y ";' – itsme86

+0

'posData'は空かもしれませんか?それは 'MyFilter()'が呼び出されることを防ぎます。 – itsme86

答えて

1

コードは正常に動作するはずです。あなたのケースでは動作しない唯一の理由は、posDataが空の場合、ですので、でないことを確認してください。

私は、このコード(基本的にはあなたと同じである)でそれを試してみました: ``辞書<文字列、文字列> `のコレクションをpostData`です

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"; 
} 
関連する問題