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

求助:触发System.InvalidOperationException: Sequence contains no elements异常

问题与解决方法

问题

运行代码时抛出异常:

System.InvalidOperationException: 'Sequence contains no elements'

相关代码:

var highestCleredFormId = dataUpdates.Where(dat => dat.IsCleared).Select(dat => dat.ID).Max();

原因

当Where(dat => dat.IsCleared)过滤后没有符合条件的元素时,调用Max()方法会触发该异常——因为Max()要求序列必须包含至少一个元素才能计算最大值。

解决方案

根据你的.NET版本,选择以下方式处理:

方式1:.NET 6及以上版本(推荐)

使用MaxOrDefault()方法,空序列时返回对应类型的默认值(如int默认0):

var highestCleredFormId = dataUpdates.Where(dat => dat.IsCleared).Select(dat => dat.ID).MaxOrDefault();

如果需要自定义默认值,可传入参数:

var highestCleredFormId = dataUpdates.Where(dat => dat.IsCleared).Select(dat => dat.ID).MaxOrDefault(-1);

方式2:.NET 6以下版本

方案A:先判断序列是否有元素

var clearedIds = dataUpdates.Where(dat => dat.IsCleared).Select(dat => dat.ID);
var highestCleredFormId = clearedIds.Any() ? clearedIds.Max() : 0; // 0替换为你需要的默认值

方案B:用DefaultIfEmpty配合Max

var highestCleredFormId = dataUpdates.Where(dat => dat.IsCleared).Select(dat => dat.ID).DefaultIfEmpty().Max();

同样,可给DefaultIfEmpty传参指定默认值:

var highestCleredFormId = dataUpdates.Where(dat => dat.IsCleared).Select(dat => dat.ID).DefaultIfEmpty(-1).Max();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 04:50:27