C#/LINQ : Trying to optimize performance

标签 c# linq

这是我的设置

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

ObservableCollection<TabViewModel> _tabs

我想检查 _tabs 中是否有任何标签 EditorTabViewModel 属性 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;

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

最佳答案

怎么样:

return _tabs.OfType<EditorTabViewModel>().Any(t => t.CanSave);

这里:

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

关于C#/LINQ : Trying to optimize performance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3967449/

相关文章:

c# - 如何使用 Oracle Managed Data Access c# 进行批量插入

c# - 在 C# 中动态识别属性

c# - 如何在 Linq 输出列表中将字节数组转换为图像

c# - EF6 : Use reference/lookup data with IQueryable

c# - 当表没有主键时使用 DeleteAllOnSubmit

c# - 我需要根据复选框列表选择特定的列

c# - AD 获取具有继承成员资格的组中的用户

c# - MVC5 中自动调用 Action 过滤器

c# - 我可以拥有一个通用的 this[] 属性吗?

c# - 是否有执行 .SelectMany(x => x) 的 Linq 方法?