C#/LINQ:尝试优化性能
这是我的设置C#/LINQ:尝试优化性能,c#,linq,C#,Linq,这是我的设置 class EditorTabViewModel : TabViewModel { ... public bool CanSave { get; set; }; } ObservableCollection<TabViewModel> _tabs 我想知道有没有更好的办法?也许我不需要检索所有选项卡,或者我只需要查询计数或其他什么?使用linq扩展,您可以编写如下内容 \u tabs.Any(p=>p是EditorTabViewModel&((Edi
class EditorTabViewModel : TabViewModel {
...
public bool CanSave { get; set; };
}
ObservableCollection<TabViewModel> _tabs
我想知道有没有更好的办法?也许我不需要检索所有选项卡,或者我只需要查询计数或其他什么?使用linq扩展,您可以编写如下内容
\u tabs.Any(p=>p是EditorTabViewModel&((EditorTabViewModel)t).可以保存)
怎么样:
return _tabs.OfType<EditorTabViewModel>().Any(t => t.CanSave);
return\u tabs.OfType().Any(t=>t.CanSave);
在这里:
是一个非缓冲过滤器,它限制我们使用of type
EditorTabViewModel
短路,因此只要找到匹配项,就会返回trueAny
return _tabs.FirstOrDefault(y => y is EditorTabViewModel && ((EditorViewModel)t).CanSave) != null;
是的,你可以提高。类似的方法可能会奏效:
return _tabs.Any(x => x is EditorTabViewModel && ((EditorTabViewModel)x).CanSave);
SingleOrDefault
仍必须使用整个序列,以确保没有两个匹配项。事实上,当可以保存多个选项卡时,这将产生与原始代码(返回true)不同的结果(异常)。
return _tabs.Any(x => x is EditorTabViewModel && ((EditorTabViewModel)x).CanSave);