public class Stock
{
}
class Program
{
static void Main(string[] args)
{
ObjectCache cache = MemoryCache.Default;
cache["test"] = new Stock();
var x = cache.OfType<Stock>().ToList();
}
}
这返回的是空的...我认为OfType应该返回类型T的集合中的所有实例?
只是为了排除ObjectCache是我也尝试过的罪魁祸首
List<object> lstTest = new List<object>();
lstTest.Add(new Stock());
var y = lstTest.OfType<Stock>().ToList();
但是,这有效-看来问题出在ObjectCache,它是下面的Dictionary的一个实例
解
cache.Select(item => item.Value).OfType<T>().ToList()
谢谢阿列克谢!
最佳答案
MemoryChache返回KeyValuePair<string,Object>
的枚举数,而不仅仅是值:MemoryChache.GetEnumerator()。
您需要相应地装箱以获取物品。就像是:
var y = cache.Select(item => item.Value).OfType<Stock>();
关于c# - 我是否正确使用LINQ .OfType()运算符?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12065084/