我存储了一堆从抽象类Creative
继承的各种类的对象。我想看看存储的是什么,所以我写了一个像这样的方法:
public void GetCreativeTypes()
{
var types = from Creative c in original.AsQueryable<Creative>()
select string.Format("{0}: {1}", c.CreativeType, c.GetType());
foreach (var type in types.Distinct())
{
Debug.WriteLine(type);
}
return;
}
...但这不会返回任何结果。我也尝试过:
public void GetCreativeTypes()
{
var types = from Creative c in original
select string.Format("{0}: {1}", c.CreativeType, c.GetType());
foreach (var type in types.Distinct())
{
Debug.WriteLine(type);
}
return;
}
具有相同的结果。我怎样才能得到我想要的结果?
原始集合中的对象就像
public class ImageCreative : Creative{}
public class FlashCreative : Creative{}
...等
答案 0 :(得分:1)
我怀疑此处还有其他内容,而不是您的查询,例如Debug.WriteLine
(尝试Console.WriteLine
甚至Trace.WriteLine
)未输出到您的“输出”窗口或您的收藏品正在首先添加到您的收藏中,等等。
至于你的查询,看起来你使用Linq-to-Objects,所以这个查询应该没问题,你不需要指定类型:
var types = from c in original
select string.Format("{0}: {1}", c.CreativeType, c.GetType());
不需要AsQueryable()
,因为您不需要使用表达式或远程数据源。
当你这样做时,看看你是否得到一个结果也很好:
Console.WriteLine(string.Format("Count: {0}", original.Count ()));
最后,您可能需要从您的集合中访问某个派生类型,所以这里有一点建议:
// returns only the objects in the collection that are type ImageCreative
var onlyImage = from c in original.OfType<ImageCreative>()
select c;
同样只获得FlashCreative,你会这样做:
// returns only the objects in the collection that are type FlashCreative
var onlyFlash = from c in original.OfType<FlashCreative>()
select c;
答案 1 :(得分:0)
结果与查询无关。文档声明记录不需要提交(只是关闭容器),但是一旦我提交它们就可以查询。那对我来说是一个头脑风暴。