问题描述
用C#加载RFID阅读器的APIDLL,并将数据在ListView中显示出来。我加载DLL后数据是读出来了,并且生成了由RFID标签ID号组成的以逗号分隔的字符串(strTmp),使用split分割后的数组string[]spStr=strTmp.Split(newchar[]{',']);,并且Add到ListView中也很顺利,RFID是循环读取的,如果数组中的元素在ListView中已经存在,则记录读取的次数并在ListView中显示出来,ListView中不存在则加入ListView并开始计数,如果已经存在的RFID标签被拿走,ListView中则停止对被拿走的标签计数,依然显示被拿走的标签数据。现在遇到的难题是:如果有新的标签放到正在读的标签中时,ListView中会被增加很多重复项。下面是我的代码:publicvoidAddDGVm(stringstrTmp){if(strTmp.Length>0){string[]spStr=strTmp.Split(newchar[]{','});intsldNum=0;inti=0;intlvCount=lv.Items.Count;intspCount=spStr.Length;List<string>list=newList<string>();while(i<spCount){if(lvCount>0&&i<lvCount){if(lv.FindItemWithText(spStr[i].Substring(1))!=null)lv.Items[i].SubItems[0].Text=Convert.ToString(Convert.ToInt32(lv.Items[i].SubItems[0].Text)+1);elseAddlvItem(sldNum.ToString(),spStr[i].Substring(0,1),spStr[i].Substring(1));}else{AddlvItem(sldNum.ToString(),spStr[i].Substring(0,1),spStr[i].Substring(1));break;}i++;}}}publicvoidAddlvItem(stringldNumStr,stringldLenStr,stringitemStr){if(ldNumStr.Length>0&&ldLenStr.Length>0&&itemStr.Length>0){ListViewItem[]lvi=newListViewItem[1];lvi[0]=newListViewItem(newstring[]{ldNumStr,ldLenStr,itemStr,DateTime.Now.ToString()});lv.Items.AddRange(lvi);}}请高手指点,如何让动态变化的数据在ListView中显示时不会出现重复项。
解决方案
解决方案二:
自己搜一下,是否存在不行吗
解决方案三:
我没仔细看,不过LINQ里那么多ExtensionMethod,没一个有帮助吗?
解决方案四:
是需要ListView动态显示,开始清点后ListView内的数据不须人工干预
解决方案五:
写一个判断是否存在的方法,在添加之前先判断
解决方案六:
QuerythecurrentListViewItemexistincurrentItenofListViewornot,ifnotexist,youcaninsertit.
解决方案七:
ListView.Item.