You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#新手求教:如何访问多层自定义类型集合中的嵌套属性?

正确判断集合中是否存在指定元素的实现方法

你遇到的问题是item.Properties是集合类型(ICollection<Property>),不能直接像单个对象那样访问Owner属性。要判断集合里是否存在满足条件的元素,应该用LINQ的Any()方法,这是最简洁高效的方式。

正确实现代码

foreach (var item in ListItem)
{
    // 直接判断集合中是否存在Owner为"abc"的Property元素
    if (item.Properties.Any(p => p.Owner == "abc"))
    {
        // 执行你的逻辑
    }
}

为什么之前的Select没成功?

Select(s => s.Owner)的作用是把集合里每个Property的Owner提取出来,生成一个IEnumerable<string>的字符串集合,但它只是做了数据投影,并没有帮你判断是否存在目标值。如果一定要用Select,后续需要配合Contains,但这种写法不如直接用Any高效:

// 不推荐,多了一步投影操作
if (item.Properties.Select(p => p.Owner).Contains("abc"))
{
    // 执行逻辑
}

额外注意事项

  • 确保你的项目已经引用了System.Linq命名空间(在代码文件顶部添加using System.Linq;),否则LINQ方法会无法使用。
  • 如果item.Properties可能为null,建议先做空值判断,避免空引用异常:
if (item.Properties != null && item.Properties.Any(p => p.Owner == "abc"))
{
    // 执行逻辑
}

内容的提问来源于stack exchange,提问作者scytaleqc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 03:12:05