В настоящее время я делаю следующее, чтобы сохранить список в IMemoryCache:
_memoryCache.Set("PriceList", horsepricelist);
И получить к нему доступ / вернуть данные:
public PriceResponse.PriceForEntry GetPriceListEntry(DateTime meetingDate, int courseId, int raceNumber, string horseCode)
{
var pricelist = _memoryCache.Get("PriceList");
var dateprefix = "/Date(" + meetingDate.Ticks.ToString() + ")/";
return ((IEnumerable)pricelist).Cast<PriceResponse.PriceForEntry>().FirstOrDefault(x => x.meetingDate == dateprefix &&
x.courseId == courseId &&
x.raceNumber == raceNumber &&
x.horseCode == horseCode);
}
Возвращать список без кода:
public List<PriceResponse.PriceForEntry> GetPriceList(DateTime meetingDate, int courseId, int raceNumber, bool? ShowAll)
{
var pricelist = _memoryCache.Get<List<PriceResponse.PriceForEntry>>("PriceList");
var dateprefix = "/Date(" + meetingDate.Ticks.ToString() + ")/";
return pricelist.Where(x => x.meetingDate == dateprefix && x.courseId == courseId && x.raceNumber == raceNumber).ToList();
}
Структура представления списка, которая хранится в кэше:
public class PriceResponse
{
public class PriceForEntry
{
public string meetingDate { get; set; }
public int courseId { get; set; }
public int raceNumber { get; set; }
public string horseCode { get; set; }
public List<Bookmakerprice> bookmakerPrices { get; set; }
}
public class Bookmakerprice
{
public int bookmakerId { get; set; }
public string bookmakerName { get; set; }
public string selectionId { get; set; }
public string fractionalOdds { get; set; }
public float decimalOdds { get; set; }
public string bookmakerRaceid { get; set; } //This is the event Id.
public string bookmakerMarketId { get; set; } //Market Id.
}
}
Есть ли лучший способ получить значения, такие как установка различных ключей и значений в кэше, чтобы получитьзапись, а не преобразование объекта обратно в список и цикл по нему?