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/

10-13 05:56