如何在列表中查找重复项目<>;
本文关键字:项目 lt gt 列表 查找 | 更新日期: 2023-09-27 18:07:50
我有:
List<string> list = new List<string>() { "a", "a", "b", "b", "r", "t" };
我怎么能只得到"a","b"?
我试着这样做:
List<string> list = new List<string>() { "a", "a", "b", "b", "r", "t" };
List<string> test_list = new List<string>();
test_list = list.Distinct().ToList();
现在test_list有{"a"、"b"、"r"、"t"}
然后:
test_list = test_list.Except(list).ToList();
这就是我的失败点,因为Except((删除了所有元素。
你能帮我解决问题吗
List<string> list = new List<string>() { "a", "a", "b", "b", "r", "t" };
var dups = list.GroupBy(x => x)
.Where(x => x.Count() > 1)
.Select(x => x.Key)
.ToList();
var list = new List<string> { "a", "a", "b", "b", "r", "t" };
var distinct = new HashSet<string>();
var duplicates = new HashSet<string>();
foreach (var s in list)
if (!distinct.Add(s))
duplicates.Add(s);
// distinct == { "a", "b", "r", "t" }
// duplicates == { "a", "b" }
试试这个
var duplicates = list.GroupBy(a => a).SelectMany(ab => ab.Skip(1).Take(1)).ToList();
一个简单的方法是使用Enumerable.GroupBy
:
var dups = list.GroupBy(s => s)
.Where(g => g.Count() > 1)
.Select(g => g.Key);
var duplicates = list.GroupBy(a => a).SelectMany(ab => ab.Skip(1).Take(1)).ToList();
它将比使用Where(g => g.Count() > 1)
的更有效,并且将仅从每个组返回一个元素。
var duplicates = list.GroupBy(s => s).SelectMany(g => g.Skip(1).Take(1)).ToList();