C# 在ListView中搜索ListViewItem

C# 在ListView中搜索ListViewItem,c#,listview,listviewitem,C#,Listview,Listviewitem,因此,我修改了我的代码和我要查找的内容: 我创建了一个锯齿状数组: object[][] arr1 = new object[2][]; 我通过以下方式将ListViewItems添加到数组arr1[1]: ListViewItems x = new ListViewItems(y); arr1[1][0]= x; 然后我需要检查数组中是否存在项x if ((arr1[1].Contains(x))) {MessageBox.Show("Exists")} 现在的问题是它总

因此,我修改了我的代码和我要查找的内容: 我创建了一个锯齿状数组:

object[][] arr1 = new object[2][];
我通过以下方式将ListViewItems添加到数组arr1[1]:

ListViewItems x = new ListViewItems(y);
arr1[1][0]= x;
然后我需要检查数组中是否存在项x

if ((arr1[1].Contains(x)))
        {MessageBox.Show("Exists")}
现在的问题是它总是以错误告终。 在数组中,值为:

arr1[0][0]{Text=“value1”}

x值是完全相同的

{Text = "value1"}
所以我现在不知道为什么当我假设arr1[1]中有大约20个项目时,它仍然是false

if ((arr1[1].Contains(x)))
    {MessageBox.Show("Exists")}

首先,我猜你的
arr
实际上是一个列表或IEnumerable

所以你应该这样做

if(arr.Contains(n))
{
    MessageBox.Show("Exists");
}
因为
Contains()
检查集合是否包含某些内容

如果您想实际比较第0项

if (arr[0] == n)
{
    MessageBox.Show("EXISTS");
}

编辑:根据OP的更新代码/要求进行更新。

首先,您要创建的不是一个二维数组,而是一个数组数组。您的
arr
有两个元素,每个元素是另一个对象数组。因此,您的
arr1[1][0]=x分配不起作用。您需要做的是为第一个数组中的每个元素分配一个数组。像这样:

object[][] arr1 = new object[2][];
arr1[0] = new object[1];
arr1[1] = new object[1];
现在,您可以将
x
设置为该数组,如下所示:

arr1[1][0] = x;
其次,您的代码示例仍然不能正常工作。所以我很惊讶你竟然声称你的代码总是处于错误状态,因为它应该抛出一个异常,因为在你的
中,
arr1[1]
如果
条件为
null
。 另外,这里没有
ListViewItems
class,它是
ListViewItem
class。我们也不知道初始化中的
y
是什么。所以,请学习如何发布一个

因为我不知道什么是
y
,所以我使用了一个字符串,现在它可以工作了

object[][] arr1 = new object[2][];
arr1[0] = new object[1];
arr1[1] = new object[1];

ListViewItem x = new ListViewItem("value");
arr1[1][0] = x;

if (arr1[1].Contains(x))
    textBox1.Text = "FOUND";
else
    textBox1.Text = "NOT FOUND";

我猜你的
arr
实际上是一个列表?它应该是WinForms。没有必要在列表框之外保留一个单独的列表数组。这样做肯定会遇到问题。我这样做是因为当我需要从listView中删除项目时,我会根据数组中的内容进行删除。我有多个数组,所以当我需要删除一个项目时,我会引用一个特定的数组。这样只会删除数组中的内容。@Sach arr是一个数组。谢谢你,我会试试的。只是好奇而已。如果我决定使用锯齿状数组,我将如何进行比较?假设我创建了一个新的锯齿状数组:object[][]arr1=新对象[2][];我需要搜索的数组在arr1[1]之内。我该如何比较?你说的锯齿阵列是什么意思?二维数组?那么这个原则仍然成立,;如果比较相同类型的两个项目,则使用比较运算符,
=
。但是真正的数组没有关联的
Contains()
方法,因此除非编写自己的方法,否则无法使用该方法。是的,二维数组。在二维数组中,我可以使用.Contains()。当我使用与上面“arr1[0].Contains(n)”相同的数组时,我重新定义了数组并创建了锯齿数组。它在数组中找不到“n”的值。