2012-01-11 16 views
2

私はmassiveを使用してデータベース内のconfigテーブルを取得しています。私は、アプリケーションが常にそこから値を取得するので、設定をキャッシュしたいと思います。クエリ動的オブジェクトのリスト

キャッシュされた後、テーブル全体がキャッシュされている場所名=「何か」はここ

があるオブジェクトを見つけるための簡単な方法があります。ここ

protected override dynamic Get() 
    { 
     var ret = HttpRuntime.Cache["Config"]; 
     if (ret == null) 
     { 
      ret = _table.All(); 
      HttpRuntime.Cache.Add("Config", ret, null, DateTime.Now.AddMinutes(2), Cache.NoSlidingExpiration,CacheItemPriority.Low, null); 
     } 
     return ret; 
    } 

私は、LINQやラムダステートメントが動的オブジェクトで許可されていないことを知っている方法から

protected override dynamic Get(string name) 
    { 
     return this.Get().Where(x => x.Name == name).SingleOrDefault(); 
    } 

を一つのレコードを引っ張るしたいところです。どのようなの次のベストそのリストから1つのオブジェクトをプルする方法ですか?

答えて

1

Lamda式を直接Where引数として書き込むことはできませんでしたが、Func変数に割り当てることができました。 また、拡張メソッドは動的オブジェクトでは機能しないので、拡張メソッドを直接呼び出す必要があります。

私は

 Func<dynamic, bool> check = x => x.Name == name; 
     System.Linq.Enumerable.Where<dynamic>(this.Get(), check); 
+0

おかげで、SAM、あなたは以下のコードを使用することができると思います。私は一度私は自分のPCに行くこれを​​試してみましょう。 – eiu165

+0

シングルエレメントはどのように入手できますか? http://stackoverflow.com/questions/8978619/query-a-list-of-dynamic-objects-for-a-firstordefault – eiu165

+0

他の質問の回答としてFirstOrDefaultまたはSingleOrDefaultを使用することができます – 000