问题描述
我现在用WPF要做一个程序,里面会有一个list集合,在这个集合里面只有1、2、3的正整数值,具体有多少个,不太清楚。我现在需要做的是在这个集合里面我要查找,如果全是数字1的话我会返回数字1,如果全是数字2的话我会返回2,如果全是3的话我会返回3,如果里面只要有一个3其余是1是2无所谓我会返回“不知道”。不知上面这个需求我该怎么处理,谢谢!
解决方案
解决方案二:
需要先定义ValueConverter:publicclassNumberConvert:IValueConverter{publicobjectConvert(objectvalue,TypetargetType,objectparameter,System.Globalization.CultureInfoculture){varlist=(List<int>)value;//如果list算是1,return1……}publicobjectConvertBack(objectvalue,TypetargetType,objectparameter,System.Globalization.CultureInfoculture){returnnull}}定义Convert资源:<local:NumberConvertx:Key="cvtNumber"/>在需要取值的地方用Binding:={Bindinglist,Converter={StaticResourcecvtNumber}}
解决方案三:
Dictionary<string,int>dic=new...dic.add("1",0);dic.add("2",0);dic.add("3",0);foreach(varvinlist)dic[v]++;if(dic["1"]==list.count){return1;}elseif......
解决方案四:
varp=newList<int>(){1,2,3,2,3,1};varn=p.Distinct().ToList();if(n.Count()==1)......
解决方案五:
引用3楼xuzuning的回复:
varp=newList<int>(){1,2,3,2,3,1};varn=p.Distinct().ToList();if(n.Count()==1)......
好像这个方法只能识别集合里面重不重复,如果全都是1或者全是2或者全是3就不行了
解决方案六:
引用2楼crystal_lz的回复:
Dictionary<string,int>dic=new...dic.add("1",0);dic.add("2",0);dic.add("3",0);foreach(varvinlist)dic[v]++;if(dic["1"]==list.count){return1;}elseif......
没太理解这个方法能否写的详细些,比如我的集合是varp=newList<int>(){1,2,3,2,3,1};,我怎样按照你的方法筛选出我想要的结果
解决方案七:
引用1楼rocmemory的回复:
需要先定义ValueConverter:publicclassNumberConvert:IValueConverter{publicobjectConvert(objectvalue,TypetargetType,objectparameter,System.Globalization.CultureInfoculture){varlist=(List<int>)value;//如果list算是1,return1……}publicobjectConvertBack(objectvalue,TypetargetType,objectparameter,System.Globalization.CultureInfoculture){returnnull}}定义Convert资源:<local:NumberConvertx:Key="cvtNumber"/>在需要取值的地方用Binding:={Bindinglist,Converter={StaticResourcecvtNumber}}
没太理解你给的方法,其实我是要在后台代码里写想要的算法,怎么会用到绑定了
解决方案八:
引用4楼woxinliuqiang的回复:
Quote: 引用3楼xuzuning的回复:
varp=newList<int>(){1,2,3,2,3,1};varn=p.Distinct().ToList();if(n.Count()==1)......好像这个方法只能识别集合里面重不重复,如果全都是1或者全是2或者全是3就不行了
如果集合里有重复项,那么Distinct出来的集合数量肯定少于原始集合Distinct出来的集合只有1项,就意味着集合里所有数据都是一样的,然后你返回这项就行否则结果就是不知道
解决方案九:
是看到你特意提到WPF,以为是要用交互逻辑呈现数据,理解错了,不好意思
解决方案十:
int[]a={0,0,0};foreach(intiinlist){a[i]++;}
解决方案十一:
varlist=newList<int>();varsum=list.Sum();varcount=list.Count;if(sum==count){//all1}elseif(sum==count*2){//all2}elseif(sum==count*3){//all3}else{//unknow}
解决方案十二:
嗯,上一个方法有点问题。。。下面这样就ok了varlist=newList<int>();varcount=list.Count;if(list.Count(i=>i==1)==count){//all1}elseif(list.Count(i=>i==2)==count){//all2}elseif(list.Count(i=>i==3)==count){//all3}else{//unknow}