C#动态数组中重复项和ListView显示
用C#加载RFID阅读器的API DLL,并将数据在ListView中显示出来。我加载DLL后数据是读出来了,并且生成了由RFID标签ID号组成的以逗号分隔的字符串(strTmp),使用split分割后的数组 string[] spStr=strTmp.Split(new char[]{',']);,并且Add到ListView中也很顺利,RFID是循环读取的,如果数组中的元素在ListView中已经存在,则记录读取的次数并在ListView中显示出来,ListView中不存在则加入ListView并开始计数,如果已经存在的RFID标签被拿走,ListView中则停止对被拿走的标签计数,依然显示被拿走的标签数据。现在遇到的难题是:如果有新的标签放到正在读的标签中时,ListView中会被增加很多重复项。
下面是我的代码:
public void AddDGVm(string strTmp)
{
if (strTmp.Length > 0)
{
string[] spStr = strTmp.Split(new char[] { ',' });
int sldNum=0;
int i=0;
int lvCount = lv.Items.Count;
int spCount = spStr.Length;
List<string> list = new List<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);
else
AddlvItem(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++;
}
}
}
public void AddlvItem(string ldNumStr, string ldLenStr,string itemStr)
{
if (ldNumStr.Length > 0 && ldLenStr.Length > 0 && itemStr.Length > 0)
{
ListViewItem[] lvi = new ListViewItem[1];
lvi[0] = new ListViewItem(new string[] { ldNumStr, ldLenStr, itemStr,DateTime.Now.ToString()});
lv.Items.AddRange(lvi);
}
}
请高手指点,如何让动态变化的数据在ListView中显示时不会出现重复项。 --------------------编程问答-------------------- 自己搜一下,是否存在不行吗 --------------------编程问答-------------------- 我没仔细看,不过LINQ里那么多Extension Method,没一个有帮助吗? --------------------编程问答-------------------- 是需要ListView动态显示,开始清点后ListView内的数据不须人工干预 --------------------编程问答-------------------- 写一个判断是否存在的方法,在添加之前先判断 --------------------编程问答--------------------
Query the current ListViewItem exist in current Iten of ListView or not, if not exist, you can insert it. --------------------编程问答-------------------- ListView.Item.
补充:.NET技术 , C#