我用c#编写程序。我有2个 marker1.ToolTipText = "ARDUINO 1";
marker2.ToolTipText = "ARDUINO 2";
控件。 ListView
从mysql数据库获取listview1
和TagName
。 TagID
从外部设备获取listview2
。我想比较2 TagName
中的TagName
字段,如果listviews
缺少MessageBox
中显示的项目,则会显示listview2
个丢失的项目。我该怎么做呢?
到目前为止,我已经尝试过这个:
listview1
但这只是显示LstView.Sort();
ListViewDatabase.Sort();
if (ListViewDatabase.Items.Count > 0)
{
for (int i = 0; i < ListViewDatabase.Items.Count; i++)
{
string t = ListViewDatabase.Items[i].SubItems[1].Text;
for (int j = 0; j < LstView.Items.Count; j++)
{
if (t != LstView.Items[j].SubItems[1].Text)
{
MessageBox.Show("Missing Tag" + LstView.Items[j].SubItems[1].Text);
}
}
}
}
中的所有标签,而不是缺少的标签。任何帮助都感激不尽。
答案 0 :(得分:1)
您可以使用此类linq查询来获取listView1
中存在但listView2
中不存在的项目:
var diff = listView1.Items.Cast<ListViewItem>().Select(x => x.Text)
.Except(listView2.Items.Cast<ListViewItem>().Select(x => x.Text));
MessageBox.Show(string.Format("{0} Missing.", string.Join(",", diff)));
答案 1 :(得分:0)
您可以使用此功能,只需根据所需字段并根据控件名称进行修改。
List<string> list1 = listView1.Items.Cast<ListViewItem>()
.Select(item => item.Text)
.ToList();
List<string> list2 = listView2.Items.Cast<ListViewItem>()
.Select(item => item.Text)
.ToList();
var commonUsers = list1.Select(a => a.Text).Intersect(list2.Select(b => b.Text)); // or use .Except to get the opposite