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

C#使用LINQ查找List集合中指定属性值唯一的元素

C# 列表按指定属性查找唯一元素实现方案

核心思路

要筛选出name属性在整个列表中仅出现一次的元素,最高效简洁的方案是借助LINQ的分组能力:先按目标属性分组,再筛选出元素数量为1的分组,最后提取分组内的元素即可。

实现代码

首先确保你已经引入了LINQ命名空间:

using System.Linq;

核心查询逻辑如下:

var uniqueItems = list
    .GroupBy(item => item.name)
    .Where(g => g.Count() == 1)
    .SelectMany(g => g)
    .ToList();

逻辑说明

  • GroupBy(item => item.name):将列表中所有元素按name属性值分组,相同name的元素会被归到同一个分组中
  • Where(g => g.Count() == 1):过滤掉分组内元素数量大于1的分组,只保留name值唯一的分组
  • SelectMany(g => g):将符合条件的分组内的元素展平为普通元素集合
  • 对你提供的测试样例,上述代码执行后uniqueItems集合中只会包含{ id = 3, name = "test1" },完全匹配预期结果

方案优势

  • 时间复杂度为O(n),仅需两次列表遍历即可完成计算,远优于嵌套循环查重的O(n²)方案,在大数量级列表下性能优势明显
  • 代码可读性强,逻辑清晰,后续如果需要更换判断唯一性的属性(比如改成按id判断),只需要修改GroupBy里的属性选择器即可,维护成本低

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 03:33:31