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

如何提取DataGridView列数字列表中的唯一值?求解DistinctBy的Function(X)

帮你理清Lambda表达式和找到唯一数字的方法

嘿,我来拆解你遇到的问题,一步步说清楚:

先解释Function(X) X.muNumber是什么

你看到的Function(X) X.muNumber是VB.NET里的Lambda表达式,简单说就是一段临时的小函数:

  • X是个临时变量名,代表集合mynumber里的每一个元素(换成item、row这类名字也完全不影响功能,只是个代号而已);
  • 整个表达式的意思是:“告诉DistinctBy方法,你要以每个元素的muNumber属性作为判断重复的标准”。

不过要提醒你:这段DistinctBy代码其实不适合你的场景——它只是把重复的元素去重后保留一个,但没法直接找出只出现过一次的那个唯一数字,毕竟你的需求里是只有一个数不重复,其他都至少重复两次对吧?

适合你场景的解决方案

针对“仅一个数字唯一,其余均重复”的情况,用分组统计的方式更准确,给你写个适合VB.NET的完整示例:

' 第一步:从DataGridView的目标列提取所有有效数字(这里假设列名是"muNumber",根据你的实际情况改)
Dim numberList = DataGridView1.Rows.Cast(Of DataGridViewRow)()
                          .Where(Function(row) Not row.IsNewRow) ' 排除空的新行
                          .Select(Function(row) Convert.ToInt32(row.Cells("muNumber").Value)) ' 转成整数
                          .ToList()

' 第二步:找出唯一的那个数字
Dim uniqueNumber = numberList.GroupBy(Function(num) num) ' 按数字分组,相同数字在一组
                             .Where(Function(group) group.Count() = 1) ' 筛选出只有1个元素的组
                             .Select(Function(group) group.Key) ' 取出组对应的数字
                             .FirstOrDefault() ' 因为你说只有一个唯一值,直接取第一个就行

' 验证结果
If uniqueNumber IsNot Nothing Then
    ' 这里可以换成你需要的操作,比如输出到界面
    MessageBox.Show($"找到唯一的数字啦:{uniqueNumber}")
End If

这段代码的逻辑拆解:

  1. 先把DataGridView里的有效行数据转成整数列表,避免处理空行或非数字内容;
  2. 用GroupBy把相同的数字归为一组;
  3. 筛选出元素数量为1的组(也就是那个只出现一次的数字);
  4. 取出这个组对应的数字,就是你要找的唯一值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:13:21