コレクション内の個々の要素をキャッシュして取得する最良の方法を見つけようとしています。
以下のコードは、リスト自体を正常にキャッシュする方法を示しています。
しかし、リスト内の特定の要素である ContesaProperties に関しては、効率的でクリーンな方法を推測できません。
以下のコードの 2 番目の部分 ---- 疑似コード ---- が私の質問の核心を形成しています。
//Define Cache Keys
private const string CACHE_CONTESALIST_KEY = "ContesaList";
private const string CACHE_CONTESA_PROPERTY_KEY = @"ContesaProperty-{0}";
.....
.....
NameValueCollection namevaluecollection = currentContext.GetCollection();
ContesaList contesaList = null;
if (Cache[CACHE_CONTESALIST_KEY] != null)
{
contesaList = Cache[CACHE_WEBCLASSLIST_KEY] as ContesaList;
}
if (contesaList == null)
{
contesaList = ContesaList.GetWebClassList();
Cache.Insert(CACHE_CONTESALIST_KEY, contesaList);
}
var contesa = contesaList.First(c => c.Id.Equals(namevaluecollection["contesaElements"], StringComparison.OrdinalIgnoreCase));
if (contesa != null)
{
// Check for Contesa Properties in cache(How?);
// if not available cache the properties within the collection where each key is
// is suffixed with the property id.
// Begin Pseudo-Code
// if (thePropertiesNotInCache)
// {
// This takes care of first element but how to do it for all the elements?
// Cache.Insert(String.Format(CACHE_CONTESA_PROPERTY_KEY, contesa.ContesaProperties.ToList()[0].CPropertyId), webclass.ContesaProperties.ToList()[0]);
// }
// End Pseudo-Code
}