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

如何在自定义类List中实现Guid字段的存在性检查(类似字典ContainsKey)?

问题:自定义类List中指定Guid的存在性检查

使用字典时,可直接通过ContainsKey或检查Value判断是否包含指定内容,但存储自定义类的List情况不同。示例中字典_wayspotAnchorGameObjects的Key类型为Guid,与wayspotAnchor.ID类型一致,可通过ContainsKey正常判断是否包含该ID。

但存储自定义类MySecondGameList的List(my_second_game_list)包含多个字段,其中guid为Guid类型。需判断wayspotAnchor.ID是否存在于该List的guid字段中,但直接比较会因类型不匹配报错,无法像字典那样仅针对指定字段检查。


相关代码

自定义类

public class MySecondGameList
{
    public Guid guid;
    public string readable_guid;
    public GameObject anchor_gameobject;
}

List定义

public class GameData_List : MonoBehaviour
{
    public List<MySecondGameList> my_second_game_list;
}

待完善方法

private void CreateAnchorGameObjects(IWayspotAnchor[] wayspotAnchors)
{
    foreach (var wayspotAnchor in wayspotAnchors)
    {
        if (gameData_List.my_second_game_list.)
        {
            
        }
        if (_wayspotAnchorGameObjects.ContainsKey(wayspotAnchor.ID))
        {
            Debug.Log("working");
            continue;
        }
       
    }
}

解决方案

方法1:使用Linq的Any()方法

首先确保代码文件顶部引入Linq命名空间:

using System.Linq;

然后修改判断条件:

if (gameData_List.my_second_game_list.Any(item => item.guid == wayspotAnchor.ID))
{
    // 存在该Guid时的逻辑
}

Any()会遍历List,检查是否存在任意一个元素的guid与wayspotAnchor.ID相等,满足条件则返回true。

方法2:预转HashSet提升查询性能

如果需要多次执行该检查,建议提前将List中的guid提取到HashSet<Guid>中,HashSet的Contains方法查询效率远高于List遍历:

// 可在初始化或数据更新时执行一次
HashSet<Guid> anchorGuidSet = new HashSet<Guid>(gameData_List.my_second_game_list.Select(item => item.guid));

// 后续判断时直接使用
if (anchorGuidSet.Contains(wayspotAnchor.ID))
{
    // 存在该Guid时的逻辑
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 04:27:27