C#/ LINQ:尝试优化性能

Jie*_*eng 3 c# linq

这是我的设置

class EditorTabViewModel : TabViewModel {
    ...
    public bool CanSave { get; set; };
}

ObservableCollection<TabViewModel> _tabs
Run Code Online (Sandbox Code Playgroud)

我要检查是否有任何选项卡_tabsEditorTabViewModel已经属性CanSave设置为true

我做了类似......

var tabs = from t in _tabs
            where t is EditorTabViewModel
            && ((EditorTabViewModel)t).CanSave == true
            select t;
if (tabs.Count() > 0)
    return true;
else
    return false;
Run Code Online (Sandbox Code Playgroud)

我想知道是否有更好的方法来做到这一点?也许我不需要检索所有标签,或者我只需要查询计数或其他什么?

Mar*_*ell 11

怎么样:

return _tabs.OfType<EditorTabViewModel>().Any(t => t.CanSave);
Run Code Online (Sandbox Code Playgroud)

这里:

  • OfType<> 是一个非缓冲过滤器,限制我们 EditorTabViewModel
  • Any 是短路的,所以一找到匹配就会返回true