Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# listview的检查包含一个特定的编号_C#_Listview - Fatal编程技术网

C# listview的检查包含一个特定的编号

C# listview的检查包含一个特定的编号,c#,listview,C#,Listview,我有以下问题:我想检查我的listview中是否已经存在预订号码 reservations.Add(new Reservation(nameTextbox.Text, lastnameTextBox.Text, gendercomboBox.SelectedText, Convert.ToInt32(ageNumericUpDown.Value), Convert.ToInt32(kamercomboBox.SelectedIndex) + 1, Convert.ToInt32(quantit

我有以下问题:我想检查我的listview中是否已经存在预订号码

 reservations.Add(new Reservation(nameTextbox.Text, lastnameTextBox.Text, gendercomboBox.SelectedText, Convert.ToInt32(ageNumericUpDown.Value), Convert.ToInt32(kamercomboBox.SelectedIndex) + 1, Convert.ToInt32(quantityUpDown.Value), true));
 reserveringListView.Items.Clear();
 foreach (Reservation reservation in reservations)
 {
     if (!reserveringListView.Items.Contains(reservation.roomnumber))
     {
         ListViewItem livi = new ListViewItem(reservation.name);
         livi.SubItems.Add(reservation.lastname);
         livi.SubItems.Add(Convert.ToString(reservation.gender));
         livi.SubItems.Add(Convert.ToString(reservation.age));
         livi.SubItems.Add(Convert.ToString(reservation.quantity));
         livi.SubItems.Add(Convert.ToString(reservation.roomnumber));
         reserveringListView.Items.Add(livi);
     }
     else
     {
         MessageBox.Show("Its impossible to reserve")
     }
}
我有以下代码向listview添加预订

 reservations.Add(new Reservation(nameTextbox.Text, lastnameTextBox.Text, gendercomboBox.SelectedText, Convert.ToInt32(ageNumericUpDown.Value), Convert.ToInt32(kamercomboBox.SelectedIndex) + 1, Convert.ToInt32(quantityUpDown.Value), true));
 reserveringListView.Items.Clear();
 foreach (Reservation reservation in reservations)
 {
     if (!reserveringListView.Items.Contains(reservation.roomnumber))
     {
         ListViewItem livi = new ListViewItem(reservation.name);
         livi.SubItems.Add(reservation.lastname);
         livi.SubItems.Add(Convert.ToString(reservation.gender));
         livi.SubItems.Add(Convert.ToString(reservation.age));
         livi.SubItems.Add(Convert.ToString(reservation.quantity));
         livi.SubItems.Add(Convert.ToString(reservation.roomnumber));
         reserveringListView.Items.Add(livi);
     }
     else
     {
         MessageBox.Show("Its impossible to reserve")
     }
}
当我尝试测试此代码时,出现以下错误:无法从int转换为System.Windows.Forms.ListViewItem

List.Contains
()方法在您的案例中需要类型为
T
System.Windows.Forms.ListViewItem
)的参数。但是您尝试将
int
传递给该方法。这就是为什么你会出错

在您的情况下,我将创建一个
哈希集
并将
reservation.roomnumber
存储在其中,以便您下次可以查找
roomnumber
是否已经存在

例如:

reserveringListView.Items.Clear();
HashSet<int> roomCheck = new HashSet<int>();
foreach (Reservation reservation in reservations)
{
    if (roomCheck.Add(reservation.roomnumber))
    {
    ...
    }
}
reserveringListView.Items.Clear();
HashSet roomCheck=新HashSet();
foreach(预订中的预订)
{
if(roomCheck.Add(reservation.roomnumber))
{
...
}
}

编辑:添加了一个示例

由于给了.Contains方法一个int参数,而该方法只接受ListViewItem作为参数,因此出现错误

尝试以下方法:

if (!reserveringListView.Items.Any(litem => litem.SubItems[5].Value == reservation.roomnumber))
{

}

您应该更改
if
语句,因为您要检查
ListView.Items
是否包含
int
。您不能执行此操作,而且,如果在
中添加
roomnumber
作为
string
(但您要检查它是否在
列表视图中。项
作为
int
)。您的
if
语句应该是:

if (!reserveringListView.Items.Cast<ListViewItem>().Any((i) => i.SubItems[5].Text == Convert.ToString(reservation.roomnumber)))
if(!reserveringListView.Items.Cast().Any((i)=>i.SubItems[5]。Text==Convert.ToString(reservation.roomnumber)))

也许我在
子项
中使用索引时出错了。您应该检查它,如果有错误,请写一条评论。

。任何项目对我不起作用后,我是否可能需要导入类似Windows.Forms.something的内容?应该是使用System.Linq的
这将不起作用,因为您比较
string
int
,您需要将
reservation.roomnumber
转换为
string
。Value
转换为
int
要使用
Any()
您应该将
项目
转换为
IEnumerable