检查数组或列表

时间:2015-12-26 23:48:58

标签: c# arrays

我有4列的查询,col1 int,col2,3,4是字符串。 我想将查询放在数组中,并检查是否有任何值匹配textbox.value

private void CheckHistory()
    {
        String qry = "Select col1,col2,col3,col4 from Table";
        using (OracleCommand cmd = new OracleCommand(qry, conn))
        {
            conn.Open();
            using (var reader = cmd.ExecuteReader())
            {
                var list = new List<MyArray>();
                while (reader.Read())
                    list.Add(new MyArray { col1 = reader.GetInt32(0), col2 = reader.GetString(1), col3 = reader.GetString(2), col4 = reader.GetString(3) });
                Array PermuteArray = list.ToArray();                     
                Boolean check = PermuteArray.Contains(textbox.text);
                MessageBox.Show(check.ToString());

                int pos = Array.IndexOf(PermuteArray, textbox.text);
                MessageBox.Show(pos.ToString());
            }
        }

我在list.add上收到错误说System.InvalidCastException:指定的强制转换是无效的。

我在PermuteArray.Contains(textbox.text)也遇到了错误。所述阵列不包含方法。

如何解决错误? 我只是想检查文本框值是否已经存在并显示警告消息。谢谢!我是C#的新手,如果我的格式不对或标签不具体,请原谅我。

1 个答案:

答案 0 :(得分:0)

根据MSDN,签名应如下所示:

var itemExists = Array.contains(array, item);

所以在你的情况下,检查应该这样做。

Boolean check = Array.Contains( PermuteArray,   textbox.text);

无论如何,我确实看到了您当前实施的一些问题。首先,您不需要将列表转换为数组来查找元素。其次,您可以使用String.Join方法创建一个字符串数组。第三,变量的命名。