如何检查C#中ListBox中是否存在数组
我在数据库中填充了两个 ListBox ,我可以使用C#将数组项从一个列表框移动到asp.net中的另一个列表框
有没有办法检查数组是否存在或是否有值?
我有这行代码,但当我从第一个ListBox 填充的第二个ListBox 中没有值时,输出为:
System.Collections.ArrayList
System.Collections.ArrayList
ArrayList arraylist2 = new ArrayList();
ArrayList arraylist4 = new ArrayList();
protected void Button1_Click(object sender, EventArgs e)
{
if (arraylist2.ToString() != "" && arraylist4.ToString() != "")
{
Response.Write(arraylist2.ToString() + "<br />" + arraylist4.ToString() + "<br />");
}
else
{
Response.Write("not array values");
}
}
你能帮助我吗?
提前谢谢。
修改
我的代码如下:
protected void Button1_Click(object sender, EventArgs e)
{
if (arraylist2.Count > 0 && arraylist4.Count > 0)
{
Response.Write(arraylist2.ToString() + "<br />" + arraylist4.ToString() + "<br />");
}
else
{
Response.Write("not array values");
}
}
修改#1
if (arraylist2.Count > 0 && arraylist4.Count > 0)
{
int b = arraylist2.Count;
for (int i = 0; i < b; i++)
{
Response.Write(arraylist2[i] + ", " + arraylist4[i]);
}
}
else
{
Response.Write("not array values");
}
修改#2
arraylist2.Add(ListBox2.ToString());
arraylist4.Add(ListBox4.ToString());
b = arraylist2.Count;
c = arraylist4.Count;
if (b > 1 && c > 1)
{
for (i = 0; i < b; i++)
{
Response.Write(arraylist2[i].ToString() + ", " + arraylist4[i].ToString());
}
}
else
{
Response.Write("not array values");
}
修改#3
arraylist2.Add(ListBox2.Text.ToString());
arraylist4.Add(ListBox4.Text.ToString());
b = arraylist2.Count;
c = arraylist4.Count;
if (b > 0 && c > 0)
{
for (i = 0; i < b; i++)
{
Response.Write(arraylist2[i].ToString() + ", " + arraylist4[i].ToString());
}
}
答案 0 :(得分:1)
转换arraylist2.ToString()没有多大意义。如果要将列表转换为字符串,可以执行以下操作:
ArrayList arrayList = new ArrayList() { 1, 2, 3 };
StringBuilder sb = new StringBuilder();
foreach (object o in arrayList)
{
sb.Append(o);
}
string s = sb.ToString();
答案 1 :(得分:0)
我不确定我是否完全理解这里的问题,因此请关注您的评论“有没有办法检查数组是否存在或有值?”您可以使用ArrayList.Count属性来确定数组列表是否实际包含任何内容。所以:
if(arraylist2.Count > 0 && arraylist4.Count > 0)
{
//your code
}
如果要显示数组列表中的每个项目,可以像这样循环遍历它们:
for(int i = 0; i < arraylist2.Count; i++)
{
Response.Write(arraylist2[i].ToString() + ", " + arraylist4[i].ToString()) //or whatever you want to write.
}
这假设每个arraylist中的项目数相同。如果没有,则获取两个列表的计数,并简单地遍历第二个列表。
<强> 修改 强>
根据我的评论,您可能最好将您的arraylists更改为List。所以你可以这样:
List<string> list2 = new List<string>();
list2.Add(//your values);
这将允许您像arraylist一样使用count属性,但是您应该能够通过使用它的索引(不需要ToString())来显示每个项目。
编辑2
好的,看过你的编辑#2和编辑#3,你仍然没有正确地将列表框中的项目添加到arraylists。你需要像这样添加它们:
for (int j = 0; j < ListBox2.Items.Count; j++)
{
if (!arraylist2.Contains(ListBox2.Items[j]))
{
arraylist2.Add(ListBox2.Items[j]);
}
}
答案 2 :(得分:0)
确保列表arraylist2
和arraylist4
都包含在内。当您在&&
中使用if
时,两个条件都必须返回true
。
下面的代码对我有用 -
ArrayList arraylist2 = new ArrayList();
ArrayList arraylist4 = new ArrayList();
private void button1_Click(object sender, EventArgs e)
{
arraylist2.Add("SomeVal");
arraylist4.Add("SomeVal");
if (arraylist2.Count > 0 && arraylist4.Count > 0)
{
MessageBox.Show(arraylist2.ToString() + "<br />" + arraylist4.ToString() + "<br />");
}
else
{
MessageBox.Show("not array values");
}
}
也
使用
arraylist2.AddRange(ListBox2.Items);
arraylist4.AddRange(ListBox4.Items);
而不是
arraylist2.Add(ListBox2.Text.ToString());
arraylist4.Add(ListBox4.Text.ToString());