我有 WPF TreeViewItems,并且我为标签定义了一个自定义对象类,例如具有类型、名称、描述等属性的自定义标签。 我需要获取 tag.Type = "test" 的所有项目,因此我定义了以下 Linq 查询:
if (!myNode.Items.Cast<TreeViewItem>().Any(item => item.Tag is CustomTag &&
(CustomTag)item.Tag.Type = "test")) { ...
不幸的是 Visual Studio 不喜欢它,我无法找到合适的方法来做到这一点
我认为它抱怨这部分
(CustomTag)item.Tag.Type = "test"
- 因为它试图从Tag
读取object
,你需要明确告诉首先进行解析:((CustomTag)item).Tag.Type = "test"
,但是你可以使用更好的语法:模式匹配:
if(!myNode.Items
.Cast<TreeViewItem>()
.Any(item => item.Tag is CustomTag customTag && customTag.Tag.Type = "test"))