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

LINQ Distinct Count返回异常:预期值2实际得到1

问题分析与解决

嘿,我一眼就看出问题出在哪了——你误用了Distinct()方法!

先给你掰扯清楚:Distinct()的作用是移除集合里的重复元素,你的schedualCodes列表里两个元素都是一模一样的"A1",经过Distinct()处理后就只剩1个"A1"了,所以Count()返回1是完全符合逻辑的。但你说预期是2,这说明你真正想统计的是满足筛选条件的总记录数,而不是去重后的不同值数量。

修正方案

你有两种简单的修正方式:

  1. 直接去掉Distinct(),统计列表的总元素数:
int schedualCodeCount = schedualCodes.Count();
  1. 更高效的写法——跳过创建中间列表的步骤,直接在LINQ查询里完成计数(节省内存和性能开销):
// 删掉原来的schedualCodes列表创建代码,直接用这行
int schedualCodeCount = allTimes.Count(key => key.SchedualCode == schedualCode && key.ViewOnSchedual);

这样修改后,schedualCodeCount就会返回你预期的2了。

另外补充一句:如果你的真实需求确实是统计不同的SchedualCode数量,那你当前的代码是正确的,但预期值2就是错误的(因为筛选后只有"A1"这一种值)。不过从你的注释和问题描述来看,你肯定是想统计符合条件的记录总数,所以上面的修正应该能完美解决你的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:18:16