簡體   English   中英

在Linq C#中動態檢查派生類類型

[英]Dynamic check of derived class type in Linq C#

我有一個Platform類作為基類,還有另外2個從Platform派生的IOSPlatform和AndroidPlatform類。

除此之外,還有一個Device類,該類具有Platform對象作為導航屬性。

查詢所有IOS平台設備時,下面的linq表達式就像一個超級按鈕一樣工作。

devices.Where(t=> t.Platform is IOSPlatform)

我想通過使其動態檢查類類型來改進此查詢:

Platform p = new IOSPlatform();
devices.Where(t=> t.Platform is /*derived class of p object*/) 

有沒有辦法做到這一點 ?

最好的祝福,

凱末爾

Platform p = new IOSPlatform();
devices.Where(t=> t.Platform.GetType()==p.GetType()) 

關於什么:

Platform p = new IOSPlatform();
devices.Where(t=> t.Platform.GetType().BaseType == p.GetType());

我不確定我是否了解,但這聽起來像您想要的

devices.Where(t =>
    p.GetType().IsAssignableFrom(t.Platform.GetType())
    );

您是否要驗證列表中的對象是否繼承自Platform? “ is”運算符已經驗證了..您可以使用以下代碼:

devices.Where(d => d.Platform is Platform);

甚至使用OfType方法:

devices.OfType<IOSPlatform>();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM