我的项目结构:
class Attachment { ... }
class Photo : Attachment { ... }
class Document : Attachment { ... }
class Page
{
public List<Attachment> attachments;
...
}
我从服务器接收页面:
List<Page> pages = ...load pages from server;
我需要从这个列表页面中获取附件中只有类型为Photo的对象。
我该怎么做?
答案 0 :(得分:6)
您可以使用OfType
:
var photos = attachments.OfType<Photo>();
如果您希望所有网页只包含照片附件:
var pagesWithPhotosOnly = pages.Where(p => p.attachments.All(pa => pa is Photo));
答案 1 :(得分:5)
实现此目的的一种方法是迭代列表并检查Attachment
的类型。
var photos = attachments.Where(a => a is Photo);
正如评论和@TimSchmelter的回答中所指出的另一种方法是直接使用OfType
扩展方法,这种方法可以说是更多&#34;表达&#34;而不是使用Where
。