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

Unity中Linq First()报错InvalidOperationException:序列无元素

问题原因

First()方法要求查询的序列必须至少包含一个元素,当equipmentLibrary.content中没有符合elem.itemData == itemToDisable条件的元素时,就会抛出InvalidOperationException异常。Visual Studio没提示错误是因为语法本身合法,编译器无法预判运行时的实际数据情况。

解决方案

有两种常用的解决方式:

方式一:使用FirstOrDefault()

这个方法在找不到元素时会返回null(引用类型),之后可以通过判空来处理异常情况:

EquipmentLibraryItem equipmentLibraryItem = equipmentLibrary.content
    .Where(elem => elem.itemData == itemToDisable)
    .FirstOrDefault();

if (equipmentLibraryItem != null)
{
    // 执行找到元素后的业务逻辑
}
else
{
    // 处理找不到元素的场景,比如打印日志提醒
    Debug.LogWarning($"未找到itemData匹配{itemToDisable}的EquipmentLibraryItem");
}

方式二:先判断元素是否存在

先用Any()检查序列中是否有符合条件的元素,再调用First():

var matchingItems = equipmentLibrary.content.Where(elem => elem.itemData == itemToDisable);
if (matchingItems.Any())
{
    EquipmentLibraryItem equipmentLibraryItem = matchingItems.First();
    // 执行业务逻辑
}
else
{
    Debug.LogWarning($"未找到itemData匹配{itemToDisable}的EquipmentLibraryItem");
}

另外,你也可以排查下itemToDisable的值是否正确,或者equipmentLibrary.content的初始化/填充是否有问题,确保数据符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 20:37:33