如何辨别" OfType()"忽略继承的类?

时间:2018-03-16 15:50:58

标签: c# wpf linq inheritance oftype

在我的WPF应用程序中,我有以下一行:

var windowList = Application.Current.Windows.OfType<Window>().ToList();

这将返回2个结果。这些结果有以下几种类型:

  1. Microsoft.Crm.UnifiedServiceDesk.Desktop
  2. System.Windows.Window
  3. 希望返回第二个结果。但是,由于结果#1继承了System.Windows.Window,因此它包含在结果中。

    有没有办法将OfType<T>()函数限制为 NOT 返回继承的类,还是我必须以另一种方式完成此操作?

1 个答案:

答案 0 :(得分:4)

您无法单独使用OfType来实现此目的,但您可以在之后使用Where子句:

var windowList = Application.Current.Windows
    .OfType<Window>()
    .Where(w => w.GetType() == typeof(Window))
    .ToList();