C# Linq取列表首个元素时出现类型转换异常求助
问题分析与解决
错误原因
Take(1) 方法返回的是包含单个元素的 IEnumerableSetting 对象,直接强制转换会触发 InvalidCastException。
修正代码
因为你明确列表仅有一条记录,推荐使用 Single() 方法获取唯一元素:
private List<Setting> _settings; private Setting _setting; _settings = _atlasService.GetSettings(); _setting = _settings.Single();
若不确定元素数量但仅需取第一个,可使用 First():
_setting = _settings.First();
如果需要兼容列表为空的场景,可使用 SingleOrDefault() 或 FirstOrDefault(),此时空列表会返回默认值(null)而非抛出异常:
_setting = _settings.SingleOrDefault();
错误信息翻译
System.InvalidCastException
HResult=0x80004002
消息: 无法将类型为 'd__25`1[Atlas.Entities.Setting]' 的对象强制转换为类型 'Atlas.Entities.Setting'。
内容的提问来源于stack exchange,提问作者JulyAnn Jackson
相关产品推荐
相关产品推荐

