我有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#的新手,如果我的格式不对或标签不具体,请原谅我。
答案 0 :(得分:0)
根据MSDN,签名应如下所示:
var itemExists = Array.contains(array, item);
所以在你的情况下,检查应该这样做。
Boolean check = Array.Contains( PermuteArray, textbox.text);
无论如何,我确实看到了您当前实施的一些问题。首先,您不需要将列表转换为数组来查找元素。其次,您可以使用String.Join方法创建一个字符串数组。第三,变量的命名。