0

基本クラスとしてPlatformクラスがあり、Platformから派生したIOSPlatformとAndroidPlatformのクラスがさらに2つあります。

これに加えて、ナビゲーションプロパティとしてPlatformオブジェクトを持つDeviceクラスがあります。

すべてのIOSプラットフォームデバイスにクエリを実行している間、以下のlinq式は魅力のように機能します。

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

次のようなクラスタイプの動的チェックを行うことで、このクエリを改善したいと思います。

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

これを行う方法はありますか?

よろしくお願いします、

ケマル

4

4 に答える 4

4
Platform p = new IOSPlatform();
devices.Where(t=> t.Platform.GetType()==p.GetType()) 
于 2012-08-21T18:54:29.773 に答える
1

よくわかりませんが、お望みのようですね

devices.Where(t =>
    p.GetType().IsAssignableFrom(t.Platform.GetType())
    );
于 2012-08-21T19:15:03.190 に答える
1

どうですか:

Platform p = new IOSPlatform();
devices.Where(t=> t.Platform.GetType().BaseType == p.GetType());
于 2012-08-21T19:01:28.757 に答える
0

リストのオブジェクトがPlatformを継承しているかどうかを確認しようとしていますか?「is」演算子は、..これを使用できることをすでに確認しています。

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

または、OfTypeメソッドを使用することもできます。

devices.OfType<IOSPlatform>();
于 2012-08-21T19:00:13.697 に答える