查找泛型集合中重复的数据并提示

无二法 2016-09-22 10:56:41
Dictionary<int, int> abc

abc.add[1,1]
abc.add[2,2]
abc.add[3,1]
abc.add[4,3]
abc.add[5,1]
abc.add[6,4]

abc的key1-6 这个是没有重复的,如何判断 abc.value的重复值,
每次点击but提示出 value的对应项key重复 比如: 1和3和5 是重复的,注:每次点击but只能提示一个项重复(第1个key),再点击则提示下一项重复(第3个key), 然后是第5的key, 再点击则从再次循环。

判断重复值是实现了,但是不知道如何实现每次点击循环提示

var valueDup = from item in abc.Values
group item by item into valueGroup
where valueGroup.Count() > 1
select valueGroup;
foreach (var item in valueDup)
{

MessageBox.Show("重复的key是:" + item.Key.ToString());
}

请高手能给个提示,或者给段代码。谢谢





...全文
215 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
无二法 2016-09-24
  • 打赏
  • 举报
回复
结贴,,十分感谢两位版主的回答,但是有可能是一开始我没有说明白,导致最后没能达到问题解决,我重新开贴,谢谢。
正怒月神 2016-09-22
  • 打赏
  • 举报
回复
没有测试过,差不多就是这么回事。
Dictionary<int, int> abc = new Dictionary<int, int>();
方法外全局变量 Count=0;

            abc.Add(1, 1);
            abc.Add(2, 2);
            abc.Add(3, 1);
            abc.Add(4, 3);
            abc.Add(5, 1);
            abc.Add(6, 4);

            var q = abc.GroupBy(x => x.Value).Where(x=>x.Count()>1).Select(x => new { Key=x.Key, Count=x.Count() }).ToList();
Count=q-Count;
           for(int i=0;i<Count;i++){Console.WriteLine(q[i].Key+"---"+q[i].Count);Count-i;}
  • 打赏
  • 举报
回复
将你的valueDup放到类的全局参数里,然后最好放到可以按索引访问的集合或者Queue这种里面,然后每点一次就取一次
  • 打赏
  • 举报
回复
List<xxx> list;
int i=0;//这两个是全局变量
你执行linq的那段代码方法()
{
list= valueDup.ToList();
i=0;
}

点击事件()
{
if(list.Count-1>i)
{
var item = list[i];
MessageBox.Show("重复的key是:" + item.Key.ToString());    
i++;
}
}
无二法 2016-09-22
  • 打赏
  • 举报
回复
感谢各位版主大人,本人初学,@starfd 按索引访问的集合或者Queue这两个没太明白,我自己能摸索。 @ hanjun0612 版主 的代码 测试了下,还是不行,只是提示第一页重复,提示后面的。 这个问题小弟已经研究了3、 4天了,所以只知道大概思路,确不知道如何实现,请各位帮忙,谢谢了

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧