这是我的设置
class EditorTabViewModel : TabViewModel {
...
public bool CanSave { get; set; };
}
ObservableCollection<TabViewModel> _tabs
我想检查_tabs
中EditorTabViewModel
是否有CanSave
属性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;
设为真的标签
我做了类似......
{{1}}
我想知道是否有更好的方法来做到这一点?也许我不需要检索所有标签,或者我只需要查询计数或什么?
答案 0 :(得分:11)
怎么样:
return _tabs.OfType<EditorTabViewModel>().Any(t => t.CanSave);
下面:
OfType<>
是一个非缓冲过滤器,将我们限制为EditorTabViewModel
Any
正在短路,因此只要找到匹配就会返回答案 1 :(得分:2)
是的,你可以改进。这样的事可能会奏效:
return _tabs.Any(x => x is EditorTabViewModel && ((EditorTabViewModel)x).CanSave);
答案 2 :(得分:1)
使用linq扩展,您可以编写类似
的内容 _tabs.Any( p => p is EditorTabViewModel && ((EditorTabViewModel)t).CanSave)
答案 3 :(得分:1)
尝试类似:
return _tabs.FirstOrDefault(y => y is EditorTabViewModel && ((EditorViewModel)t).CanSave) != null;